الخادم بطيء: كيف تجد سبب ارتفاع استهلاك المعالج والذاكرة

بطء الخادم له غالبًا أحد ثلاثة أسباب: برنامج يستهلك المعالج، أو ذاكرة نفدت، أو قرص مضغوط. هذه الأوامر تحدد السبب خلال دقائق، قبل أن تفكر في ترقية خطتك.

آخر تحديث:

أولًا: انظر إلى الصورة العامة

الأمر ⁦top⁩ يرتّب البرامج حسب استهلاك المعالج، واضغط ⁦Shift+M⁩ لترتيبها حسب الذاكرة. وقارن ⁦Load average⁩ بعدد الأنوية: ⁦4⁩ على خادم بأربع أنوية يعني أنه يعمل بكامل طاقته.

⁦console⁩
$ ⁦top⁩
$ ⁦nproc⁩
$ ⁦uptime⁩

ثانيًا: هل نفدت الذاكرة؟

انظر إلى عمود ⁦available⁩ وليس ⁦free⁩، فلينكس يستخدم الذاكرة الفارغة كذاكرة مؤقتة. وإذا أوقف النظام برنامجًا لنفاد الذاكرة فسترى ذلك في السجل، وهذا يفسر توقف قاعدة البيانات فجأة.

⁦console⁩
$ ⁦free -m⁩
$ ⁦sudo dmesg -T⁩ | ⁦grep -i⁩ "⁦out of memory⁩"

ثالثًا: هل القرص هو السبب؟

إذا كان المعالج هادئًا والخادم بطيئًا فافحص القرص. ارتفاع قيمة ⁦wa⁩ في ⁦top⁩ يعني أن المعالج ينتظر القرص. ويأتي الأمر ⁦iostat⁩ مع الحزمة ⁦sysstat⁩، وعمود %⁦util⁩ القريب من ⁦100⁩ يعني قرصًا مضغوطًا.

⁦console⁩
$ ⁦iostat -x 2 5⁩

تأكد أيضًا أن القرص غير ممتلئ، فامتلاؤه يبطئ كل شيء. راجع دليل امتلاء قرص الخادم.

رابعًا: هل هو هجوم أو زيارات غير طبيعية؟

هذه الأوامر تعد الاتصالات وتعرض أكثر العناوين طلبًا لموقعك. عناوين قليلة بآلاف الطلبات تعني زحفًا أو هجومًا، فاحجبها في الجدار الناري. ومسار السجل يختلف حسب خادم الويب.

⁦console⁩
$ ⁦ss -tan⁩ | ⁦wc -l⁩
$ ⁦sudo awk⁩ '{⁦print⁩ $⁦1⁩}' /⁦var/log/nginx/access.log⁩ | ⁦sort⁩ | ⁦uniq -c⁩ | ⁦sort -n⁩ | ⁦tail -n 10⁩

على ويندوز

افتح مدير المهام (⁦Ctrl+Shift+Esc⁩) ورتّب حسب المعالج أو الذاكرة أو القرص. ومراقب الموارد (⁦resmon⁩) يعطي تفاصيل أكثر. وتحديثات ويندوز ومكافح الفيروسات من الأسباب الشائعة.

متى تحتاج إلى خطة أكبر؟

عندما يبقى الاستهلاك مرتفعًا طوال الوقت مع برامج سليمة ومعدّلة، وليس لفترة قصيرة أو بسبب برنامج عالق.

هل كانت الصفحة مفيدة؟