2015-05-16 18 views
6

मेरे पास रिमोट सेवा के लिए POST/GET अनुरोध करने और परिणाम संग्रहीत करने के लिए सेलेरी श्रमिकों को चलाने के लिए एक उत्पादन सेटअप है, यह प्रति 15 मिनट प्रति 20k कार्यों को लोड कर रहा है।सेलेरी कार्यकर्ता बिना किसी त्रुटि के लटकता है

समस्या यह है कि मजदूर बिना किसी कारण, कोई त्रुटि, कोई चेतावनी नहीं छोड़ते हैं।

मैंने मल्टीप्रोसेसिंग को भी एक ही परिणाम जोड़ने की कोशिश की है।

लॉग में मैं रों

करने में सफल रहा तरह अधिक जानकारी के लिए कार्य को क्रियान्वित करने, के समय में वृद्धि देखने https://github.com/celery/celery/issues/2621

+0

हिस्सा अतुल्यकालिक "MongoDB में प्रतिक्रिया भंडारण" है:


तो आप इस पेज को देखा है? इसके लिए लॉग है? –

उत्तर

11

को देखने के अपने अजवाइन कार्यकर्ता कभी कभी अटक जाते हैं, तो आप strace & lsof उपयोग कर सकते हैं पता लगाने के लिए जिस प्रणाली पर यह अटक जाता है।

उदाहरण के लिए:

$ strace -p 10268 -s 10000 
Process 10268 attached - interrupt to quit 
recvfrom(5, 

10268, अजवाइन कार्यकर्ता की पीआईडी ​​है recvfrom(5 का मतलब कार्यकर्ता फ़ाइल वर्णनकर्ता से डेटा प्राप्त पर रुकती है।

फिर आप इस कार्यकर्ता प्रक्रिया में 5 क्या है, यह देखने के लिए lsof का उपयोग कर सकते हैं।

lsof -p 10268 
COMMAND PID USER FD TYPE DEVICE SIZE/OFF  NODE NAME 
...... 
celery 10268 root 5u IPv4 828871825  0t0  TCP 172.16.201.40:36162->10.13.244.205:wap-wsp (ESTABLISHED) 
...... 

यह इंगित करता है कि कार्यकर्ता एक TCP कनेक्शन पर अटक जाते हैं (आप FD कॉलम में 5u देख सकते हैं)।

requests जैसे कुछ अजगर संकुल, इस, अजवाइन कार्यकर्ता रुक जाता है का कारण यदि आप requests उपयोग कर रहे हैं हो सकता है सहकर्मी से डेटा प्रतीक्षा करने के लिए ब्लॉक कर रहा है, timeout तर्क स्थापित करने के लिए सुनिश्चित करें।

https://www.caktusgroup.com/blog/2013/10/30/using-strace-debug-stuck-celery-tasks/

संबंधित मुद्दे