Image

ज्ञानधार → उच्च वेब सर्वर लोड के कारण

[वर्चुअल सर्वर]
प्रकाशन तिथि: 20.10.2024

यहां इस गाइड में, हम वर्चुअल सर्वर पर उच्च लोड के मुख्य कारणों की समीक्षा करेंगे और उन्हें कैसे हल किया जा सकता है, इस पर चर्चा करेंगे।

उदाहरण के लिए, जब सर्वर पर होस्ट की गई वेबसाइट को खोलते हैं, तो काफी देरी होती है और कंसोल में कमांड्स के निष्पादन में धीमापन आता है।

1. लोड की जांच करना

उदाहरण के लिए, अगर 6 CPU कोर हैं, तो अधिकतम लोड (लोड एवरेज) 6 होना चाहिए (1 कोर का 100% 1 होता है)।

हमारे उदाहरण में, हम कमांड का उपयोग करते हैं:

top

स्क्रीनशॉट में, हम देख सकते हैं कि लोड संकेतक काफी हद तक अधिक हो गया है, जो वर्चुअल मशीन पर बहुत उच्च लोड को दर्शाता है।

इस प्रकार, सर्वर की धीमी प्रदर्शन की वजह एक महत्वपूर्ण ओवरलोड है। हमारे उदाहरण में, हम उन प्रोसेस को भी देख सकते हैं जो इस लोड को पैदा कर रहे हैं, जिन्हें (R) के रूप में चिह्नित किया गया है - (रनिंग - सक्रिय प्रोसेस)।

COMMAND कॉलम में, हम देख सकते हैं कि कौन सी विशिष्ट कमांड सबसे अधिक संसाधनों का उपभोग कर रही है। हमारे मामले में, ये PHP स्क्रिप्ट्स हैं।

इसके अलावा, Tasks पैरामीटर पर ध्यान दें, जो वर्चुअल मशीन पर प्रोसेस की संख्या दिखाता है - 752, जिनमें से 40 सक्रिय स्थिति में हैं।

उदाहरण के लिए, जब साइट सामान्य रूप से 700 अनोखे विजिटर्स प्रति दिन और लगभग 21,000 विजिटर्स प्रति महीने को हैंडल करती है, तो समान सर्वर कॉन्फ़िगरेशन के साथ लोड इस प्रकार होता है: LA - 0.41, Tasks - 51 (2 रनिंग)।

यह काफी स्पष्ट है कि सर्वर संभवतः फ्लड या DoS हमले के अधीन है, या स्पैम भेजने के लिए स्क्रिप्ट्स चल रही हैं, या सर्वर का उपयोग हमलावर के प्रॉक्सी के रूप में किया जा रहा है।

2. समाधान

उच्च लोड की स्थिति में कंसोल में काम करना अक्सर कठिन होता है। चूंकि हमारे मामले में समस्या वेब सेवाओं से उत्पन्न हो रही है, आइए उन्हें बंद करते हैं:

service nginx stop
service apache2 stop

कुछ मामलों में, इन कमांड्स को निष्पादित होने में समय लग सकता है, इसलिए प्रोसेस को जबरन समाप्त करना बेहतर होता है।

सक्रिय प्रोसेस के PID की जांच करें और उन्हें निम्नलिखित कमांड का उपयोग करके समाप्त करें (जहां pid प्रोसेस ID है):

kill -9 pid

अगर top कमांड को शुरू होने में धीमापन आ रहा है या यह लैग कर रही है, तो ps aux का उपयोग करें और प्रोसेस के नाम के लिए फिल्टर लगाएं:

ps aux | grep nginx

इन प्रोसेस को समाप्त करने के बाद, लोड सामान्य हो जाना चाहिए। फिर आप एक्सेस लॉग में लगातार अनुरोधों की जांच कर सकते हैं और tail कमांड और grep फिल्टर का उपयोग करके स्क्रिप्ट के पथ की पहचान कर सकते हैं:

tail -f /var/log/nginx/access.log

नोट! आपके पास लॉग फ़ाइल का पथ और नाम अलग हो सकता है।

इसके बाद, हानिकारक स्क्रिप्ट्स को हटा दें। ये मुख्य फ़ाइलों के मुकाबले अलग निर्माण तिथि वाली होंगी, जिसे आप फ़ाइल मैनेजर mc का उपयोग करके देख सकते हैं।

2.1 उच्च लोड का कारण बनने वाली स्क्रिप्ट को खोजने का वैकल्पिक तरीका

यदि सर्वर आपकी कमांड्स का थोड़े विलंब (सहनीय) के साथ जवाब दे रहा है, तो आप निम्नलिखित कमांड का उपयोग करके स्क्रिप्ट फ़ाइल को खोज सकते हैं (जहां pid PHP प्रोसेस ID है):

lsof -p pid

हानिकारक फ़ाइलों को हटाएँ, और सर्वर पर लोड कम हो जाएगा।

हानिकारक फ़ाइलें हमेशा DoS या DDoS हमलों के मामले में मौजूद नहीं होती हैं। इस स्थिति में, आपको सुरक्षा लागू करने की आवश्यकता होगी, जिसका हमने यहाँ विस्तार से वर्णन किया है: अपने वेब सर्वर को फ्लड हमलों से कैसे बचाएं

यह परिदृश्य अधिक संभावना है यदि सर्वर पर लोकप्रिय CMS का उपयोग किया जा रहा है और उन्हें लंबे समय से अपडेट नहीं किया गया है।





No Comments Yet