क्या एक नई कार्यकर्ता प्रक्रिया को शुरू करना संभव है और खुलेपन में लुआ स्क्रिप्टिंग का उपयोग करके मौजूदा रूप से गतिशील रूप से बंद करना संभव है?
1 उत्तर
हां लेकिन नहीं
ओपनरेस्टी वास्तव में इस तरह की कार्यक्षमता को सीधे तौर पर पेश नहीं करता है, लेकिन यह आपको आवश्यक बिल्डिंग ब्लॉक्स देता है:
- nginx कर्मचारियों को सिग्नल भेजकर उन्हें हटाया जा सकता है
- openresty आपको मौजूदा रॉकर थ्रेड के पीआईडी पढ़ने की अनुमति देता है
- LuaJITs FFI आपको
kill()
का उपयोग करने की अनुमति देता है सिस्टम कॉल or os.execute
का उपयोग करके आप बसkill
< पर कॉल कर सकते हैं /ए> सीधे।
उनको मिलाकर, आप जो चाहते हैं उसे हासिल करने में सक्षम होना चाहिए: डी
नोट: प्रश्न को दोबारा पढ़ने के बाद, मैंने देखा कि मैंने वास्तव में केवल दूसरे भाग का उत्तर दिया था।
nginx
कार्यकर्ता प्रक्रियाओं की एक निश्चित संख्या का उपयोग करता है, इसलिए आप केवल चल रहे श्रमिकों को बंद कर सकते हैं, जो मास्टर प्रक्रिया फिर से शुरू होगी, लेकिन संख्या वही रहेगी।
यदि आप केवल कार्यकर्ता प्रक्रियाओं की संख्या को बदलना चाहते हैं, तो आपको पूरी तरह से nginx इंस्टेंस को पुनरारंभ करना होगा (मैंने अभी कोशिश की nginx -s reload -g 'worker_processes 4;'
और यह वास्तव में किसी भी अतिरिक्त श्रमिकों को पैदा नहीं किया)।
हालाँकि, मुझे कोई अच्छा कारण नहीं दिख रहा है कि आप ऐसा क्यों करेंगे। यदि आपको अतिरिक्त थ्रेड्स की आवश्यकता है, तो उसके लिए एक अलग एपीआई है, इसके अलावा, आपको शायद हार्ड रीस्टार्ट के साथ रहना होगा।
संबंधित सवाल
नए सवाल
nginx
Nginx ("इंजन x") एक वेब सर्वर, रिवर्स प्रॉक्सी, टीसीपी स्ट्रीम प्रॉक्सी और मेल प्रॉक्सी है, जो बीएसडी जैसे लाइसेंस के तहत जारी किया जाता है।