تحسين البنية التحتية في Linux: CPU, RAM, Disk, Network
تحسين الأداء في Linux ليس "سحر إعدادات"، بل عملية هندسية تعتمد على القياس والتجربة.
في هذا الدرس ستتعلم منهجية عملية لتحديد عنق الزجاجة وتحسينه بأمان.
قاعدة Infra Tuning: Measure -> Change -> Verify
- اجمع baseline قبل أي تعديل
- غيّر إعدادًا واحدًا فقط
- اختبر الحمل وقارن النتائج
- ثبّت التعديل أو تراجع عنه
مراقبة CPU واكتشاف الضغط
top
htop
uptime
mpstat -P ALL 1 5
- راقب
load average - راقب عمليات تستهلك CPU بشكل غير طبيعي
مراقبة الذاكرة وSwap
free -h
vmstat 1 5
cat /proc/meminfo | head
كثرة استخدام swap مع latency عالية قد تشير لحاجة tuning أو زيادة RAM.
تحليل أداء القرص (Disk I/O)
iostat -xz 1 5
iotop
df -h
du -h --max-depth=1 /var | sort -hr
| المؤشر | دلالة مبدئية |
|---|---|
%util مرتفع جدًا |
اختناق I/O محتمل |
| wait مرتفع | المعالج ينتظر القرص |
تحليل الشبكة والأداء
ss -s
ip -s link
sar -n DEV 1 5
ping -c 10 8.8.8.8
loss أو latency عالية قد تكون السبب الحقيقي في "بطء التطبيق".
تحسينات sysctl شائعة (بحذر)
sysctl vm.swappiness
sysctl net.core.somaxconn
sysctl fs.file-max
تطبيق دائم عبر ملف مخصص:
sudo nano /etc/sysctl.d/99-tuning.conf
sudo sysctl -p /etc/sysctl.d/99-tuning.conf
تحسين إعدادات الخدمات حسب نوع الحمل
- Nginx: workers وconnections
- PostgreSQL/MySQL: الذاكرة والـ buffers
- Java/Node: limits للذاكرة والthreads
tuning يجب أن يكون متوافقًا مع التطبيق وليس النظام فقط.
ضبط حدود الملفات والعمليات (ulimit)
ulimit -n
ulimit -u
بعض الخدمات تحتاج file descriptors أعلى لتجنب أخطاء "too many open files".
منهجية اختبار الأداء بعد كل تعديل
- شغّل نفس load test قبل/بعد
- قارن latency وthroughput وerror rate
- راقب الموارد أثناء الاختبار
- وثّق النتيجة
أخطاء شائعة في Infra Tuning
- تعديل عشرات القيم دفعة واحدة
- الاعتماد على intuition بدل metrics
- نسيان rollback plan
- تحسين النظام وتجاهل الاستعلامات/الكود البطيء
تمرين عملي: Baseline أداء خادم Linux
uptime
free -h
df -h
iostat -xz 1 3
ss -s
top -b -n 1 | head -n 20
الهدف: جمع baseline واضح قبل أي tuning. بدون baseline لا يوجد تحسين قابل للقياس.
FAQ: أسئلة شائعة حول Infra Tuning في Linux
ما المقصود بـ Infra Tuning في Linux؟
هو تحسين إعدادات النظام والخدمات لرفع الأداء والاستقرار بناءً على قياسات فعلية.
كيف أبدأ تحسين الأداء بدون مخاطرة؟
ابدأ بالقياس أولاً، غيّر إعدادًا واحدًا كل مرة، ثم قارن النتائج قبل/بعد.
ما أكثر أخطاء tuning شيوعًا؟
التعديل العشوائي بدون baseline، وتطبيق تغييرات كثيرة دفعة واحدة، وعدم اختبار الأثر تحت حمل حقيقي.