सुनिश्चित करें कि एक प्रक्रिया हमेशा चल रही है


23

मैंने कुछ समय पहले चेरोकी का उपयोग करके साइटों की मेजबानी करना शुरू कर दिया था। बाहरी स्रोतों (FastCGI, आदि) के लिए यह प्रक्रिया शुरू करने का एक विकल्प है अगर यह निर्दिष्ट सॉकेट या पोर्ट पर चलने वाले को नहीं मिल सकता है। यह बहुत अच्छा है क्योंकि इसका मतलब है कि अगर PHP या एक Django साइट पर गिर जाता है (जैसा कि वे कभी-कभी करते हैं) यह स्वचालित रूप से इसे पुनरारंभ करता है।

PHP-FPM का उपयोग कर एक नए सर्वर पर मैं चेरोकी का उपयोग नहीं कर सकता (इसमें PHP के साथ एक बग है) ताकि मैं NGINX में स्थानांतरित हो गया। मैं वास्तव में NGINX (इसकी विन्यास शैली के लिए) को पसंद करता हूं, लेकिन मैं गंभीर प्रक्रियाओं के साथ गिर रहा हूं और कभी भी सांस नहीं ले रहा हूं। PHP कभी-कभी ऐसा करती है लेकिन Django साइट्स एक समस्या है। मैंने उनके लिए init स्क्रिप्ट बनाई है और वे बूट पर आते हैं, लेकिन इससे मुझे मदद नहीं मिलती है अगर वे रिबूट के बीच शंखनाद करते हैं।

मुझे लगता है कि मैं एक FastCGI प्रॉक्सी की तलाश कर रहा हूं। चेरोकी की तरह कुछ, जानता है कि किस प्रक्रिया को किन सॉकेट्स / पोर्ट्स पर चलना चाहिए और उन्हें ऑन-डिमांड रिस्पॉन्स करता है। क्या ऐसी किसी वस्तु का अस्तित्व है? क्या एनजीआईएनएक्स (इसे आसानी से कॉन्फ़िगर करने के लिए) में इसे बनाने का कोई तरीका है?

जवाबों:


13

कैसे के बारे में डेमोनटूल और विशेष रूप से पर्यवेक्षण उपकरण

पर्यवेक्षण एक सेवा की निगरानी करता है। यह सेवा शुरू करता है और यदि यह मर जाता है तो सेवा को पुनरारंभ करता है। एक नई सेवा सेट करना आसान है: सभी सुपरवाइज़ की ज़रूरत एक रन स्क्रिप्ट के साथ एक निर्देशिका है जो सेवा को चलाता है।


Daemontools के लिए +1। हालाँकि, आप अक्सर इसकी तरह एक स्क्रिप्ट नहीं फेंक सकते /etc/init.d/apachectl। आपको अक्सर उपयोग करने के लिए अपनी खुद की सरल स्टार्टअप स्क्रिप्ट को फिर से लिखना होगा exec। हालाँकि मैं डेमोंटोल्स का उपयोग करके कुछ और उदाहरण देखना पसंद करूंगा
स्टीफन लासिवस्की

डेमोंटोसल्स में रनिट के रूप में एक और अवतार है। अभी इतना महत्वपूर्ण नहीं है कि डेमोनटूल सार्वजनिक डोमेन है, लेकिन एक पुराने डिस्ट्रो में केवल रनिट हो सकता है।
कैम


5

मैं daemontoolsसुझाव देता हूं , लेकिन अगर आप डीजेबी के सॉफ्टवेयर के काम करने के तरीके (जो भी कारण हो) को पसंद नहीं करते हैं, तो यह भी है supervisord

मैंने कुछ समय पहले एक FreeBSD छवि स्थापित की थी जो कि supervisordप्रबंधन करती थी nginxऔर gunicorn, जिसका उपयोग मैंने कुछ सरल WSGI ऐप्स को होस्ट करने के लिए किया था, और यह पूरी प्रक्रिया बहुत सीधी थी।

यदि आप Django के लिए ऐसा कर रहे हैं, तो Gunicorn, Django ऐप्स को तैनात करने के लिए वास्तव में सरल बनाता है, btw। देखें इस ब्लॉग पोस्ट अधिक जानकारी के लिए।


4

एक अन्य विकल्प मॉनेट का उपयोग करना हो सकता है , जो कि मैं आमतौर पर उपयोग करता हूं।


3

क्या आपने विचार किया god?

रूबी में लिखे गए निगरानी ढांचे को विस्तारित करने के लिए आसान, ईश्वर कॉन्फ़िगर करना आसान है।

अपनी सर्वर प्रक्रियाओं और कार्यों को चालू रखना आपकी तैनाती प्रक्रिया का एक सरल हिस्सा होना चाहिए। भगवान का लक्ष्य सबसे सरल, सबसे शक्तिशाली निगरानी आवेदन उपलब्ध होना है।

मैं यह सुनिश्चित करने के लिए इसका उपयोग करता हूं कि यदि रेल / नग्नेक्स इंस्टेंसेस खत्म हो जाते हैं, तो वे पुनर्जीवित हो जाते हैं, और हालांकि मैं जाँच के लिए समर्थन में नहीं देखा कि क्या यह सही पोर्ट का उपयोग कर रहा है या नहीं, लेकिन यदि समस्या यह है कि प्रक्रिया विफल है या नहीं अब नहीं चल रहा है, आप के साथ गलत नहीं हो सकता god


0

डेमोंटोसल्स और सुपरवाइजर के अलावा, डेमनीज है



0

एक हैकिश समाधान समय-समय पर एक स्क्रिप्ट लॉन्च करना होगा (जिसके माध्यम से cron) यदि प्रक्रिया नीचे है, तो यह बंद हो जाती है और इस मामले में इसे वापस कर देती है।


0

एक असफल डेमॉन को पुनः आरंभ करने के विभिन्न तरीके हैं, सामान्य अनुशंसा "रिस्पना inittab" है, लेकिन अगर मशीन वास्तव में खराब हो जाती है, तो एक सीमा के कुछ विचार के साथ।

वॉचडॉग डेमन अपनी पीआईडी ​​फ़ाइल के माध्यम से एक प्रक्रिया की निगरानी भी कर सकता है। हालांकि, इसे केवल एक मशीन को रिबूट करने के लिए रक्षा की एक माध्यमिक रेखा के रूप में माना जाना चाहिए जो ठीक से चलाने के लिए बहुत बीमार है (जैसे कि मेमोरी, कांटा-बमबारी, आदि से बाहर), और प्राथमिक तरीके या डेमॉन की निगरानी और पुनः आरंभ करने के रूप में नहीं।

अंत में आप एक वैश्विक दृष्टिकोण के साथ प्रशासक (ओं) को प्रदान करने के लिए नगियोस का उपयोग करके जटिल प्रणालियों की निगरानी करने पर विचार कर सकते हैं। यह बाहरी रूप से डेमॉन के संचालन की जांच करने के लिए प्लग-इन चला सकता है, जो कि इसके कामकाज का एक अधिक संपूर्ण परीक्षण है जो कि केवल पीआईडी ​​लाइव है।


-1

सरल उत्तर - शुरू करें, अपना पिड कहीं लिखें, और हर एक्स समय (सेकंड, मिनट, आपकी शर्त) की जाँच करें कि क्या प्रक्रिया है।

लंबे उत्तर - उपरोक्त सभी अच्छे तरीके हैं। लेकिन कुछ जटिल है।

यह भी ध्यान रखें कि जीवित रहना और अनुरोधों का जवाब देना अलग चीजें हैं।


1
... और अपनी उंगलियों को पार करें और आशा करें कि पीआईडी ​​फ़ाइल पर कुछ भी नहीं लिखा है, या इसे मिटा देता है, या इसे अलग डेमॉन के लिए फिर से उपयोग करता है, या इसे कुछ अन्य निर्दोष और असंबंधित प्रक्रिया पर फिर से इंगित करता है जो चेक की अच्छी प्रतिक्रिया नहीं देगा ऊपर होने के लिए। ☺ यही कारण है कि एक उचित डेमन सुपरवाइजर का लंबा जवाब जो डेमन को बाल प्रक्रियाओं के रूप में चलाता है और उन्हें सामान्य यूनिक्स / लिनक्स सिस्टम तंत्रों के साथ मॉनिटर करता है, लंबे समय से स्वीकृत बेहतर तरीका है।
JdeBP
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.