السيرفر بطيء، والأوامر تتأخر، وربما توقفت قاعدة البيانات فجأة ثم عادت؟ غالبًا الذاكرة (RAM) امتلأت. في هذا الدليل نفحص الذاكرة بالطريقة الصحيحة (وأغلب الناس يقرؤون الرقم الخطأ)، ونعرف البرنامج المسبّب، ثم نعالج المشكلة: من إعادة تشغيل الخدمة، إلى ملف Swap — وقد كبّرناه فعلًا من 1G إلى 2G على سيرفر في مرام هوست — وحتى الترقية.
⚡ الإجابة المختصرة
نفّذ free -h وانظر عمود available لا free. اعرف المستهلك بـps -eo pid,%mem,comm --sort=-%mem | head، وتأكد من قتل البرامج بـjournalctl -k | grep -i "killed process". للحل السريع أعد تشغيل الخدمة، ولأمان أكبر كبّر Swap، وإن كان الاستهلاك دائمًا قرب الحد فرقِّ الخطة.
الخطوة 1: اقرأ الذاكرة بشكل صحيح

- free صغير؟ لا تقلق. لينكس يستعمل الذاكرة الفارغة كاشًا (buff/cache) لتسريع القرص، ويعطيها للبرامج فور حاجتها.
- available هو الرقم الحقيقي: كم تستطيع البرامج أن تأخذ الآن. في سيرفرنا 6.9Gi من 7.5Gi — مرتاح جدًا.
- Swap مستعمل بكثرة مع available قليل = ضغط حقيقي على الذاكرة، والسيرفر يبطؤ لأن القرص أبطأ من الرام بكثير.
وللصورة عبر الوقت افتح رسم Memory في رسوم الأداء، واضبط تنبيه بريد عند تجاوز 90%.
الخطوة 2: من يأكل الذاكرة؟
ps -eo pid,user,%mem,rss,comm --sort=-%mem | head # أكثر العمليات استهلاكًا
top # ثم اضغط M لترتيب حسب الذاكرة، وq للخروج
sudo docker stats --no-stream # استهلاك كل حاوية
sudo journalctl -k | grep -i "killed process" # هل قتل النظام برامج لنقص الذاكرة؟
الأمر الأخير مهم: عندما تنفد الذاكرة يقتل لينكس أكبر عملية تلقائيًا (OOM killer)، وغالبًا تكون قاعدة البيانات، فتبدو وكأنها «توقفت وحدها». في سيرفرنا لم يظهر أي سطر، أي لم يُقتل شيء.
الخطوة 3: الحلول من الأسرع إلى الأدوم
ملف Swap: إنشاؤه وتكبيره
Swap مساحة على القرص يستعملها النظام كذاكرة إضافية عند الامتلاء. أبطأ من الرام بكثير، لكنه يمنع توقف البرامج فجأة. قوالب لينكس في مرام تنشئ ملف Swap بحجم 1G تلقائيًا عند أول تشغيل، مع swappiness=10 (أي لا يلجأ إليه النظام إلا عند الحاجة الحقيقية). إن احتجت أكبر، هكذا كبّرناه إلى 2G:

# تكبير ملف swap موجود (أو إنشاؤه إن لم يوجد)
sudo swapoff /swapfile # أوقفه أولًا (تجاهل الخطأ إن لم يوجد)
sudo fallocate -l 2G /swapfile # الحجم الجديد
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# اجعله دائمًا بعد إعادة التشغيل (موجود أصلًا في قوالب مرام)
grep -q '^/swapfile' /etc/fstab || echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
تذكّر: Swap شبكة أمان وليس بديلًا عن الرام. إن رأيته مستعملًا باستمرار والسيرفر بطيء، فالحل الحقيقي تحديد استهلاك البرامج أو الترقية.
