सर्वर पर सभी सेवाओं के नीचे जाने का क्या कारण हो सकता है, फिर भी पिंग का जवाब देना? और यह कैसे पता लगाना है


9

यह बहुत कम दिनों के भीतर दो बार पहले ही मेरे साथ हो चुका है, मेरा सर्वर पूरी तरह से नीचे चला गया है, जिसका अर्थ है http, ssh, ftp, dns, smtp, मूल रूप से सभी सेवाएँ प्रतिसाद देना बंद कर देती हैं, जैसे कि सर्वर बंद कर दिया गया था, सिवाय इसके कि अभी भी पिंग का जवाब है। , जो कि मुझे सबसे ज्यादा लुभाता है।

मेरे पास कुछ php स्क्रिप्ट्स हैं, जो सर्वर पर एक छोटी लोड (cpu और मेमोरी) का कारण बनती हैं, जो कि उपयोगकर्ताओं के एक छोटे समूह द्वारा उपयोग की जाती हैं, लेकिन आमतौर पर सर्वर इन फटने के लिए पूरी तरह से "जीवित" रहता है, और जब यह नीचे जाता है उपयोग में ऐसी चोटियों के साथ कभी मेल नहीं खाते (मैं यह नहीं कह रहा हूं कि यह संबंधित नहीं हो सकता है, लेकिन यह सिर्फ उन लोगों के बाद नहीं होता है)।

मैं आपको जादुई रूप से इन दुर्घटनाओं का अंतिम कारण बताने में सक्षम नहीं होने के लिए कह रहा हूं, मेरा सवाल यह है: क्या एक एकल प्रक्रिया है जिसकी मृत्यु के कारण इन सभी सेवाओं को एक साथ नीचे जाना पड़ सकता है? मजेदार बात यह है कि पिंग को छोड़कर सभी नेटवर्क सेवाएं नीचे चली जाती हैं। यदि सर्वर में 100% CPU कुछ प्रक्रिया द्वारा खाया जाता है, तो यह पिंग का भी जवाब नहीं देगा। यदि अपाचे टूटी हुई php स्क्रिप्ट के कारण (उदाहरण के लिए) दुर्घटनाग्रस्त हो गया, तो यह केवल http को प्रभावित करेगा, ssh और dns .... आदि।

मेरा OS Cent OS 5.6 है

सबसे महत्वपूर्ण बात, सर्वर को हार्ड-रिबूट करने के बाद, मुझे किस सिस्टम लॉग को देखना चाहिए? / var / log / संदेश कुछ भी संदिग्ध नहीं प्रकट करते हैं।

जवाबों:


8

( tl; p अभी भी पिंग का जवाब देना एक अपेक्षित व्यवहार है, अपने मेमोरी उपयोग की जांच करें)

ICMP इको रिक्वेस्ट (यानी पिंग) इन-कर्नेल नेटवर्किंग स्टैक द्वारा संभाला जाता है, जिसमें कोई अन्य निर्भरता नहीं होती है।

कर्नेल को "मेमोरी रेजिडेंट" के रूप में जाना जाता है, जिसका अर्थ है कि इसे हमेशा रैम में रखा जाएगा, और इसे एक नियमित एप्लिकेशन की तरह डिस्क पर स्वैप नहीं किया जा सकता है।

इसका मतलब उन स्थितियों में है जहां आप भौतिक मेमोरी एप्लिकेशन से डिस्क को स्वैप करते हैं, लेकिन कर्नेल वहीं रहता है जहां यह है। जब भौतिक और स्वैप दोनों मेमोरी फुल हो जाती हैं (और सिस्टम आपके प्रोग्राम को लंबे समय तक प्रबंधित नहीं कर सकता है) मशीन गिर जाएगी। हालाँकि, क्योंकि a) कर्नेल अभी भी मेमोरी और b में है) यह कुछ और की मदद के बिना पिंग अनुरोधों का जवाब दे सकता है, सिस्टम सब कुछ मृत होने के बावजूद पिंग का जवाब देता रहेगा।

आपकी समस्या के संबंध में मुझे स्मृति मुद्दों पर बहुत संदेह होगा। "Sysstat" को स्थापित करें और मेमोरी / cpu / लोड / io लोड आदि के लॉग को देखने के लिए "sar" कमांड का उपयोग करें। दुर्घटना के समय मैं उम्मीद करूंगा कि आप 100% भौतिक और स्वैप दोनों का उपयोग करेंगे।

मैं OOM- किलर (आउट-ऑफ-मेमोरी-किलर) के किसी भी संकेत के लिए dmesg या / var / log / संदेशों को देखने पर भी विचार करूंगा । यह कर्नेल की आपातकालीन प्रणाली है जो मेमोरी समाप्त होने की स्थिति में मारना शुरू कर देगी। यह प्रभावशीलता काफी हद तक इस बात पर निर्भर करती है कि किन प्रक्रियाओं को मारा जा रहा है। मेमोरी खाने वाली एक एकल प्रक्रिया को कुशलतापूर्वक मार दिया जाएगा और मेमोरी को मुक्त कर दिया जाएगा, हालांकि एक अपाचे-आधारित वेबसाइट एक बच्चे की प्रक्रिया के रूप में जल्द ही प्रतिस्थापन प्रक्रियाओं को मार देगी।


OOM किलर के लिए +1
HTTP500

बहुत बहुत धन्यवाद, मुझे लगभग यकीन है कि यह समस्या है, क्योंकि सर्वर की विफलता से पहले RAM और स्वैप दोनों पूर्ण थे। (मैं ovh के प्रबंधक के आँकड़ों पर देख सकते हैं)। और यह शायद मेरी कुछ पागल php स्क्रिप्ट है जो बहुत सारी मेमोरी का उपयोग करती है। हालांकि यह मुझे कुछ कारणों के लिए पहेली करता है। (1) ऐसा लगता है कि php द्वारा खाई गई मेमोरी को बाद में मुक्त नहीं किया गया है, लेकिन इससे कोई मतलब नहीं होगा; (2) किसी भी मामले में, मैं एक उचित ऑपरेटिंग सिस्टम की अपेक्षा नहीं करूंगा कि बहुत अधिक मेमोरी का उपयोग करके एक (या यहां तक ​​कि कुछ) प्रक्रियाओं के कारण पूरी तरह से मरने की ... मैं यह उम्मीद करूंगा
matteo

सिस्टम को सही ढंग से काम करने के लिए पर्याप्त राम नहीं होने पर यह पूछने के लिए मेमोरी को आवंटित करने से इनकार करें ... मेरा मतलब है कि एक छोटी गाड़ी या यहां तक ​​कि दुर्भावनापूर्ण प्रोग्राम पूरे सिस्टम को नष्ट करने में कभी भी सक्षम नहीं होना चाहिए ...
मैट

3
@matteo Linux के पास वह है जो इसे "ओवरकॉमिट" कहता है: सिर्फ इसलिए कि आप malloc()1GB RAM का वास्तव में मतलब नहीं है कि आप इसका उपयोग करने जा रहे हैं, इसलिए मेमोरी मैनेजर इस बात पर नज़र रखता है कि आपके प्रोग्राम को कितनी मेमोरी में यह लगता है और कितनी मेमोरी है कार्यक्रम वास्तव में इस्तेमाल किया है, और यह वास्तव में अच्छी तरह से काम करता है, ज्यादातर समय। कम से कम, जब तक एक से अधिक कार्यक्रम वास्तव में 1GB का उपयोग करना चाहता है, तो उसे लगता है कि यह है।
डर्फ़क

1
@matteo मुझे कोई संकेत नहीं दिखता है कि यह एक OOM समस्या है। आमतौर पर, ओओएम-हत्यारा विशिष्ट या प्रक्रियाओं को चुनता है जो कुछ मानदंडों को पूरा करते हैं, लेकिन यह हमेशा डीश की तरह हत्या नहीं करेगा। यह निश्चित रूप से I / O की तरफ है। जैसा कि मैंने अपने उत्तर में अनुरोध किया था, आपने अपनी हार्डवेयर स्थिति / चश्मा नहीं समझाया।
इविविट

5

आमतौर पर, यह एक I / O या डिस्क सबसिस्टम समस्या है। अक्सर बार, यह एक अति-उच्च सिस्टम लोड औसत के साथ जोड़ा जाएगा। उदाहरण के लिए, नीचे दिए गए ग्राफ़ में विस्तृत सिस्टम अप्रतिसादी हो गया (फिर भी पिंगेबल था) जब एक स्क्रिप्ट भड़की, फाइलों का एक गुच्छा बंद हुआ और लोड 4-सीपीयू सिस्टम पर 36 ... हो गया।

यहां छवि विवरण दर्ज करें

रैम में चलने वाली सेवाओं और डिस्क एक्सेस की आवश्यकता नहीं होती है ... इस प्रकार नेटवर्क स्टैक (पिंग) ऊपर है, लेकिन डिस्क एक्सेस की आवश्यकता होने पर अन्य सेवाएं स्टाल ... SSH जब एक कुंजी को संदर्भित किया जाता है या पासवर्ड लुकअप की आवश्यकता SMTP लोड बंद हो जाता है जब लोड औसत हिट 30 या तो ...

जब सिस्टम इस स्थिति में है, nmapतो सर्वर के आईपी के खिलाफ रिमोट को देखें कि क्या हो रहा है।

यदि आपकी डिस्क या संग्रहण समस्या है तो आपका लॉगिंग संभवत: काम नहीं करता ...

क्या आप हार्डवेयर सेटअप का वर्णन कर सकते हैं? क्या यह वर्चुअल मशीन है? स्टोरेज लेआउट क्या है?

लॉगिंग से अधिक, आप यह देखना चाहते हैं कि क्या आप सिस्टम के प्रदर्शन को ग्राफ़ कर सकते हैं और समझ सकते हैं कि यह कब हो रहा है। देखें कि क्या यह किसी विशिष्ट गतिविधि से संबंधित है।


यह मानकर कि यह मुद्दा है, क्या SSH को पासवर्ड (एस) को स्मृति में रखने के लिए कहने का कोई तरीका है, इसलिए भले ही सर्वर इस स्थिति में हो, मैं कम से कम ssh के माध्यम से इसमें लॉग इन कर सकता हूं और देखने के लिए कुछ कमांड चला सकता हूं। क्या चल रहा है?
Matteo

1
यदि यह I / O है, तो आपको इस मुद्दे की तह तक जाना होगा। यदि यह डिस्क सरणी टाइमआउट या ड्राइवर इंटरैक्शन है, तो यह स्क्रिप्ट से अलग है जो खराब तरीके से या संसाधन विवाद मुद्दे को निष्पादित करता है।
ewwhite
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.