2012-06-01 13 views
93

मैंने 3 श्रमिक 30 कार्यकर्ता कनेक्शन और इवेंटलेट वर्कर क्लास का उपयोग करके गनिकोर्न सेट किया है। यह Nginx के पीछे सेटअप है। प्रत्येक कुछ अनुरोधों के बाद, मैं इसे लॉग में देखता हूं।गनिकॉर्न वर्कर टाइमआउट त्रुटि

[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475) 
None 
[INFO] gunicorn.error: Booting worker with pid: 23514 

ऐसा क्यों हो रहा है? मैं कैसे गलत हो रहा है यह पता लगा सकता हूं?

धन्यवाद

+1

आप समस्या को हल करने में सक्षम थे entrypoint को --timeout 90 जोड़ सकता हूँ? कृपया अपने विचार साझा करें क्योंकि मैं इसके साथ भी अटक गया हूं। 'Gunicorn == 19.3.1' और' gevent == 1.0.1' –

+1

इसके लिए समाधान मिला। बहुत बड़े मूल्य के लिए बढ़ाया गया टाइमआउट और फिर मैं स्टैक ट्रेस –

उत्तर

10

--log-level=DEBUG साथ भागो Gunicorn।

यह आपको एक ऐप स्टैक ट्रेस देना चाहिए।

+36

देख सकता था यह मेरे मामले में नहीं है। – Joe

+7

अब यह '--log-level debug' – psychok7

+1

है, मुझे एक स्ट्रैट्रैस प्राप्त करना अच्छा लगेगा, लेकिन उनमें से कोई भी बंदूक का उपयोग करके 19.4.5 का उपयोग नहीं करता है। डीबग सामान प्रदर्शित होता है, इसलिए मुझे लगता है कि ध्वज पहचाना गया था, लेकिन टाइमआउट पर स्टैकट्रैक नहीं था। – orzel

7

क्या यह हो सकता है? http://docs.gunicorn.org/en/latest/settings.html#timeout

अन्य संभावनाएं आपकी प्रतिक्रिया बहुत लंबी लग रही हैं या प्रतीक्षा में फंस गई हैं।

+3

यह यूआरएल अब http://docs.gunicorn.org/en/latest/settings.html#timeout – JasonB

5

आप अधिक विवरण के लिए यह देख एक अन्य कार्यकर्ता प्रकार वर्ग एक async एक तरह gevent या बवंडर का इस्तेमाल किया जाना चाहिए: पहले explantion:

तुम भी Eventlet या Gevent स्थापित करने के लिए अगर चाहते हो सकता है आपको लगता है कि आपके आवेदन कोड

दूसरा एक अनुरोध प्रसंस्करण के दौरान समय की विस्तारित अवधि के लिए रुकने की आवश्यकता हो उम्मीद:

डिफ़ॉल्ट सिंक्रोनस कर्मचारी मानते हैं कि आपका एप्लिकेशन संसाधन सीपीयू और नेटवर्क बैंडविड्थ के संदर्भ में है। आम तौर पर इसका मतलब है कि आपके आवेदन को ऐसा कुछ भी नहीं करना चाहिए जो अनिर्धारित समय लेता है। उदाहरण के लिए, इंटरनेट के लिए एक अनुरोध इस मानदंड को पूरा करता है। किसी बिंदु पर बाहरी नेटवर्क इस तरह से विफल हो जाएगा कि ग्राहक आपके सर्वर पर ढेर हो जाएंगे।

75

हमें Django + nginx + gunicorn का उपयोग करने में एक ही समस्या थी। Gunicorn प्रलेखन से हमने सुंदर-टाइमआउट को कॉन्फ़िगर किया है जिसने लगभग कोई फर्क नहीं पड़ता है।

कुछ परीक्षणों के बाद, हमें समाधान मिला, कॉन्फ़िगर करने के लिए पैरामीटर है: टाइमआउट (और सुंदर टाइमआउट नहीं)। यह एक घड़ी की तरह काम करता ..

ऐसा:

1) gunicorn विन्यास फाइल

2) जो भी आप की जरूरत करने के लिए समाप्ति सेट खोलने - मान सेकंड में है

NUM_WORKERS=3 
TIMEOUT=120 

exec gunicorn ${DJANGO_WSGI_MODULE}:application \ 
--name $NAME \ 
--workers $NUM_WORKERS \ 
--timeout $TIMEOUT \ 
--log-level=debug \ 
--bind=127.0.0.1:9000 \ 
--pid=$PIDFILE 
+5

धन्यवाद यह सही जवाब है। और फिर, कई समवर्ती कनेक्शनों के साथ संसाधनों को सहेजने के लिए: 'पाइप इंस्टॉल गीवेंट' , फिर कमांड लाइन पर अपनी कॉन्फ़िगरेशन फ़ाइल या '-कि gevent' में 'worker_class gevent'। Ge12 का उपयोग कर –

+1

मेरी समस्या हल करता है। – LiberiFatali

3

मैं बहुत समान समस्या थी, मैं भी "runserver" का उपयोग करता है, तो मैं कुछ भी मिल सकता है देखने के लिए कोशिश की, लेकिन सब मैं था संदेश था Killed

तो मैं टी सोचा कि यह संसाधन समस्या हो सकती है, और मैं उदाहरण के लिए और अधिक रैम देने के लिए आगे बढ़ गया, और यह काम किया।

+0

मैं इस समस्या को गीवेन्ट और टाइमआउट सेट के साथ भी सही तरीके से देख रहा था, स्मृति से समस्या थी – bcattle

2

Google मेघ पर बस में app.yaml

entrypoint: gunicorn -b :$PORT main:app --timeout 90 
संबंधित मुद्दे