यह पता चला हमारे स्वयं के कस्टम Resque.before_fork
औरहोने से है कि हमारी समस्या के कारण हुई थीहैंडलर।
न्यूरेलिक का आरपीएम मणि स्वचालित रूप से श्रमिकों के लिए संचार चैनल स्थापित करने के लिए Resque.before_fork
और Resque.after_fork
के साथ हुक सेट करेगा। Resque की सीमा के रूप में, यह पहले_फोर और after_fork हुक के लिए केवल अंतिम निर्दिष्ट ब्लॉक/प्रो चलाता है। इसलिए, यदि आपके पास पहले_फर्क/after_fork हुक से पहले अपना कस्टम है, तो आपको * एजेंट के संचार चैनल को हाथ से स्थापित करना होगा, उदा।
Resque.before_fork do |job|
NewRelic::Agent.register_report_channel(job.object_id)
# extra custom stuff here
end
Resque.after_fork do |job|
NewRelic::Agent.after_fork(:report_to_channel => job.object_id)
# extra custom stuff here
end
इस कोड को सीधे आरपीएम मणि की फाइल gems/newrelic_rpm-3.5.0/lib/new_relic/agent/instrumentation/resque.rb
आरपीएम बग अद्यतन 2012/12/27 से लिया जाता है: एक config/initializers/custom_resque.rb फ़ाइल में ऊपर तकनीक की तैनाती के बाद, हमने पाया कि आरपीएम मणि फोर्क मोड (जैसे रेस्क्यू) में इस्तेमाल होने पर फ़ाइल हैंडल लीक करता है। हमने ActiveRecord::StatementInvalid: ArgumentError: too large fdsets: SET client_min_messages TO ''
के त्रुटि संदेशों को देखा। खुदाई के बाद हमने पाया कि ये तब होते हैं जब ActiveRecord डेटाबेस कनेक्शन खोलने का प्रयास करता है और ऐसा नहीं कर सकता क्योंकि फ़ाइल डिस्क्रिप्टर की संख्या समाप्त हो जाती है। न्यू रिलीक ने पुष्टि की कि व्याख्या योजना की नमूना करते समय एजेंट में एक बग है। ऐसा तब होता है जब बहुत से बचाव कार्य चलते हैं जो डीबी से जुड़ते हैं। ज्यादा सिर खरोंच हमें पता चला कि इस बग resque-lonely_job मणि जो Resque के before_perform
हुक है कि एक Resque::Job::DontPerform
अपवाद के साथ एक Resque काम करना बंद कर सकता का उपयोग करता है के साथ एक असमर्थित बातचीत के कारण हुई थी बाद:
बग अद्यतन 2013/01/28। आरपीएम क्लाइंट इस स्थिति में ठीक से साफ नहीं करता है और फाइल डिस्क्रिप्टर लीक करता है। नई अवशेष को सूचित किया गया है और एक फिक्स पर काम कर रहा है।
बग अपडेट 4/10/2013: यह तय किया गया है। हम 3.6.0.78 का उपयोग कर रहे हैं और यह इस मामले को संभालता है। कोई और फाइल डिस्क्रिप्टर लीक नहीं! धन्यवाद नया अवशेष।
स्रोत
2012-10-18 21:41:43
अपने रेस्क श्रमिकों के लिए लॉग में क्या आप न्यूट्रिक एजेंट कनेक्टिंग देखते हैं? – jakeonrails