2016-04-26 10 views
6

मेरे पास uWSGI पर चल रहे कई ऐप्स हैं। उनमें से ज्यादातर समय के साथ स्मृति उपयोग में वृद्धि करते हैं। मैंने हमेशा इसे एक स्मृति रिसाव के लिए जिम्मेदार ठहराया है जिसे मैंने ट्रैक नहीं किया था। लेकिन हाल ही में मैंने देखा है कि विकास काफी चंचल है। मैं सोच रहा हूं कि प्रत्येक खंड एक प्रक्रिया शुरू होने से संबंधित है या नहीं।क्या uWSGI बूट प्रक्रियाओं पर सभी प्रक्रियाओं को शुरू करता है?

क्या यूडब्ल्यूएसजीआई बूट प्रक्रिया पर सभी प्रक्रियाओं को शुरू करता है, या क्या यह केवल एक नया शुरू होता है जब इसे आवश्यक बनाने के लिए पर्याप्त अनुरोध आते हैं?

[uwsgi] 
strict = true 

wsgi-file = foo.py 
callable = app 

die-on-term = true 

http-socket = :2345 

master = true 
enable-threads = true 
thunder-lock = true 
processes = 6 
threads = 1 

memory-report = true 

अद्यतन: इस प्रासंगिक लग रहा है:

यहाँ एक उदाहरण config है http://uwsgi-docs.readthedocs.org/en/latest/Cheaper.html

"कार्यकर्ता" "प्रक्रिया" के रूप में एक ही बात मतलब यह है (उत्तर yes हो रहा है)? ऐसा है तो ऐसा लगता है कि अगर मैं नंबर हमेशा स्थिर रहना चाहते हैं लगता है, मुझे क्या करना चाहिए:

cheaper = 6 
cheaper-initial = 6 
processes = 6 

उत्तर

6

हाँ, uWSGI सभी प्रक्रियाओं शुरू कर देंगे (या कार्यकर्ताओं - कार्यकर्ता uWSGI config में प्रक्रिया के लिए एक उपनाम है) बूट पर समय लेकिन यह आपके आवेदन पर निर्भर करेगा कि तब से क्या होगा। यदि आवेदन बूट समय पर सभी मॉड्यूल आयात करता है, तो इसे पहले अनुरोध से पहले पूरी तरह से लोड किया जाना चाहिए, लेकिन अगर कुछ मॉड्यूल अनुरोध समय पर लोड किए जाते हैं, तो प्रत्येक कार्यकर्ता केवल पहले अनुरोधों के बाद ही लोड हो जाएगा (मानते हैं कि कोई भी अनुरोध सभी मॉड्यूल लोड करेगा। अगर नहीं , यह केवल उन अनुरोधों के संयोजन के बाद पूरी तरह लोड हो जाएगा जो इसे लोड करेंगे)।

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

डिफ़ॉल्ट रूप से, सस्ता सक्षम नहीं है - इसका मतलब है कि यूडब्ल्यूएसजीआई स्टार्टअप पर सभी श्रमिकों को जन्म देगा। यदि आप सस्ता मोड का उपयोग करना चाहते हैं, तो आपको कम से कम cheaper पैरामीटर को परिभाषित करने की आवश्यकता है। सस्ता सिस्टम के उपयोग के बारे में अधिक जानकारी आप documentation

यूडब्ल्यूएसजीआई में अनुरोध की गई राशि के आधार पर लोड को नियंत्रित करने के लिए कई अन्य सिस्टम हैं। उदाहरण के लिए

आप चिंतित हैं कि uWSGI बहुत ज्यादा संसाधनों को ले जाएगा रहे हैं, वहाँ उस के लिए समाधान भी कर रहे हैं:

+0

धन्यवाद!हाँ, मुझे मॉड्यूल लोडिंग और मेमोरी ग्रोथ को प्रभावित करने वाली अन्य चीजों के बारे में पता था, मैं सिर्फ प्रक्रिया बूटिंग के बारे में सोच रहा था। क्या आप जानते हैं कि सस्ता सेटिंग्स क्या हैं? –

+0

सस्ता सेटिंग स्टार्टअप पर श्रमिकों को रोकने के बजाय, पहले अनुरोध पर इसे करने से रोक देगा। यह आपको यह निर्धारित करने की अनुमति देता है कि स्टार्टअप पर कितने श्रमिक पैदा होंगे, अनुरोधों पर कितने श्रमिकों को तैयार किया जा सकता है (यदि आवश्यक हो) और यदि श्रमिकों को अनुरोध पर तैयार किया जाता है तो अब आवश्यकता नहीं होने पर अनुरोधों को स्वचालित रूप से मार दिया जाना चाहिए। – GwynBleidD

+0

यूवीजीआई का उपयोग करने वाली डिफ़ॉल्ट प्रणाली सस्ता है और ये सेटिंग्स इसके व्यवहार को कॉन्फ़िगर करती हैं, या यह एक विशेष मोड है जो सेटिंग्स का उपयोग करते समय सक्रिय होता है? –

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