انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

الخادم يعمل ببطء: تشخيص المعالج والذاكرة والقرص

دليل اكتشاف وحل مشاكل أداء الخادم: قائمة تحقق للمعالج والذاكرة والقرص وswap وتحليل العمليات واختبار الشبكة. تشخيص بطء خادم Linux.

وقت القراءة: 10 دقائق استكشاف الأخطاء وإصلاحها
خادم بطيءمشكلة الأداءاستخدام المعالجالذاكرة ممتلئةالقرص ممتلئswapاستكشاف الأخطاء

جدول المحتويات

مقدمة

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

هذا الدليل مُعد لخوادم Linux (Ubuntu، Debian، CentOS، Rocky Linux). لـ Windows Server تُجرى فحوصات مماثلة بأدوات مختلفة.

1. فحص استخدام المعالج

ارتفاع استخدام المعالج هو السبب الأكثر شيوعاً لبطء الخادم.

حالة المعالج الفورية

hljs bash
# استخدام المعالج العام
top -bn1 | head -5

# عرض تفصيلي وتفاعلي
htop

# استخدام المعالج حسب النواة
mpstat -P ALL 1 5

العمليات الأكثر استهلاكاً للمعالج

hljs bash
# قائمة العمليات مرتبة حسب استخدام المعالج
ps aux --sort=-%cpu | head -20

# مراقبة في الوقت الفعلي
top -o %CPU

إذا كان استخدام المعالج باستمرار فوق 90%، يجب تحديد العمليات المكثفة وتحسينها أو زيادة موارد الخادم.

اقتراحات الحل

  • أوقف العمليات غير الضرورية: kill -9 PID
  • حسّن إعدادات التطبيق (عدد العمال، حد الخيوط)
  • فكّر في زيادة موارد المعالج (ترقية VDS)

2. فحص استخدام الذاكرة

عدم كفاية الذاكرة يؤدي إلى استخدام swap وبطء شديد في الخادم.

حالة الذاكرة

hljs bash
# حالة الذاكرة العامة
free -h

# معلومات الذاكرة التفصيلية
cat /proc/meminfo | head -10

# استخدام الذاكرة حسب العملية
ps aux --sort=-%mem | head -20

تفسير مثال المخرجات

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       6.2Gi       0.3Gi       0.1Gi       1.3Gi       1.2Gi
Swap:         2.0Gi       1.5Gi       0.5Gi
المقياسصحيتحذيرحرج
استخدام الذاكرة< 70%70-90%> 90%
استخدام Swap0< 25%> 50%
المتاح> 20%10-20%< 10%

إذا كان استخدام swap مرتفعاً (> 50%)، فالذاكرة غير كافية. Swap يعمل على القرص لذا هو أبطأ بكثير من الذاكرة.

3. فحص استخدام القرص والإدخال/الإخراج

مساحة القرص

hljs bash
# ملخص استخدام القرص
df -h

# البحث عن أكبر المجلدات
du -sh /* 2>/dev/null | sort -rh | head -10

# البحث عن أكبر الملفات
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -10

عندما يتجاوز استخدام القرص 90%، قد تبدأ مشاكل الأداء. فوق 95% مستوى حرج — يجب تحرير مساحة فوراً.

أداء إدخال/إخراج القرص

hljs bash
# إدخال/إخراج القرص الفوري
iostat -x 1 5

# استخدام الإدخال/الإخراج حسب العملية
iotop -o

# اختبار سرعة القراءة/الكتابة
dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 oflag=direct
rm /tmp/testfile
المقياسNVMe SSDSATA SSDHDD
القراءة3000+ ميجابايت/ث500+ ميجابايت/ث100-200 ميجابايت/ث
الكتابة2000+ ميجابايت/ث400+ ميجابايت/ث80-150 ميجابايت/ث
IOPS500 ألف+50 ألف+100-200

4. تحليل استخدام Swap

إذا كان استخدام swap مرتفعاً، فالذاكرة غير كافية والخادم يدير الذاكرة عبر القرص.

hljs bash
# حالة swap
free -h | grep Swap
swapon --show

# أي العمليات تستخدم swap؟
for file in /proc/*/status; do
  awk '/VmSwap|Name/{printf $2 " " $3}END{print ""}' $file 2>/dev/null
done | sort -k2 -rn | head -10

تنظيف Swap (حل مؤقت)

hljs bash
# تنظيف swap إذا كانت هناك ذاكرة فارغة كافية
sudo swapoff -a && sudo swapon -a

تنظيف swap حل مؤقت. للحل الدائم، قم بزيادة حجم الذاكرة أو حسّن التطبيقات المستهلكة للذاكرة.

5. فحص أداء الشبكة

hljs bash
# إحصائيات واجهة الشبكة
ifconfig eth0

# عدد الاتصالات
ss -s

# الاتصالات النشطة (أكثر عناوين IP اتصالاً)
ss -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

# استخدام عرض النطاق (يتطلب nload)
nload eth0

# اختبار السرعة
wget -O /dev/null http://speedtest.tele2.net/10MB.zip 2>&1 | tail -2

عدد كبير من الاتصالات (10,000+) قد يستنزف موارد الخادم. قد تكون تحت هجوم DDoS — تحقق من سجل الهجمات في لوحة Path.

6. تحليل العمليات

hljs bash
# عدد العمليات الجارية
ps aux | wc -l

# العمليات الميتة (zombie)
ps aux | awk '{if ($8 == "Z") print}'

# العمليات الأطول تشغيلاً
ps -eo pid,etime,comm --sort=-etime | head -20

# استخدام الموارد لتطبيق معين
ps aux | grep -i mysql
ps aux | grep -i java
ps aux | grep -i node

7. فحص سجلات النظام

hljs bash
# آخر أخطاء النظام
dmesg | tail -50

# سجلات OOM (نفاد الذاكرة) killer
dmesg | grep -i "oom\|killed process"

# سجلات النظام
journalctl -p err --since "1 hour ago"

# أخطاء القرص
dmesg | grep -i "error\|fail\|i/o"

إذا رأيت سجلات OOM killer، فالذاكرة غير كافية والنظام يُنهي العمليات قسراً لتحرير الذاكرة.

قائمة التحقق السريعة

hljs bash
# ملخص الحالة العامة بأمر واحد
echo "=== CPU ==="; top -bn1 | head -5; echo "\n=== RAM ==="; free -h; echo "\n=== DISK ==="; df -h /; echo "\n=== LOAD ==="; uptime; echo "\n=== TOP PROCESSES ==="; ps aux --sort=-%cpu | head -5

متى يجب التواصل مع فريق الدعم؟

  • إذا لم تجد مشكلة واضحة في الفحوصات أعلاه
  • إذا كنت تشك في مشكلة على مستوى العتاد
  • إذا كان أداء الشبكة منخفضاً وتشك في هجوم DDoS
  • إذا كان OOM killer يتفعل باستمرار

إرفاق مخرجات الأوامر أعلاه عند إنشاء طلب الدعم يساعد في حل المشكلة بشكل أسرع.