إطلاق العنان لقدرات Linux الكامنة: دليل شامل لضبط النواة (Kernel Tuning)

استمع للبودكاست حوار شيق بين لمى وأبو عمر
0:00 / 0:00

مقدمة: قصة خادم تائه في بحر البيانات

بتذكر مرة، كنت شغال على مشروع كبير، خادم ويب بستقبل آلاف الطلبات في الدقيقة. كل شي كان تمام التمام في البداية، بس مع زيادة عدد المستخدمين، بلش الخادم يتصرف بغرابة. صار بطيء، وبرجع أخطاء غريبة، ومرات حتى بتوقف بالمرة. 😠

قعدت أيام وليالي وأنا بدور على المشكلة، عملت فحص لكل جزء في الكود، راجعت قواعد البيانات، بس ما لقيت شي! لحد ما خطر ببالي أراقب موارد النظام. وهون كانت المفاجأة! الخادم كان بستنفذ كل الموارد المتاحة، وبالذات عدد الملفات المفتوحة والاتصالات.

هون اكتشفت إنه إعدادات النواة الافتراضية مش كافية لتحمل هاد الكم من الضغط. وقتها، بدأت رحلة تعلم ضبط النواة (Kernel Tuning)، واليوم بدي أشارككم خبرتي بهالموضوع. 😎

ما هو ضبط النواة (Kernel Tuning)؟

النواة (Kernel) هي قلب نظام التشغيل Linux. هي المسؤولة عن إدارة الموارد، والتعامل مع الأجهزة، وتوفير واجهة للتطبيقات. نظام Linux بيجي بإعدادات افتراضية بتناسب الاستخدام العام، بس لما يكون عندك خادم بشتغل تحت ضغط عالي، لازمك تعدل هالإعدادات لتناسب احتياجاتك. هاد هو ضبط النواة!

معالجة حدود الملفات والاتصالات

في عالم Linux، كل شي هو ملف. يعني حتى الاتصال بالشبكة بعتبر ملف. الإعداد الافتراضي لعدد الملفات المفتوحة غالباً ما بيكون قليل (عادةً 1024). لما خادمك يحاول يفتح ملف رقم 1025، راح يفشل!

زيادة عدد الملفات المفتوحة (fs.file-max و ulimit)

أول خطوة هي زيادة الحد الأقصى لعدد الملفات المفتوحة على مستوى النظام. بتقدر تعدل قيمة `fs.file-max` في ملف `sysctl.conf`:


sudo nano /etc/sysctl.conf

أضف السطر التالي:


fs.file-max = 655350

بعدين شغل الأمر التالي لتطبيق التغييرات:


sudo sysctl -p

كمان لازم تعدل الحد الأقصى لعدد الملفات المفتوحة لكل مستخدم. بتقدر تعمل هيك عن طريق تعديل ملف `limits.conf`:


sudo nano /etc/security/limits.conf

أضف الأسطر التالية:


* soft nofile 65535
* hard nofile 65535

**نصيحة:** تأكد انك تعمل restart للـ session تبعك (logout ثم login) عشان التغييرات تتفعل.

زيادة حجم طابور الاتصالات المعلقة (net.core.somaxconn)

لما يجي طلب اتصال جديد (SYN)، النظام بحطه في طابور لحد ما تطبيقك (مثلاً Node.js) يقبله. إذا الطابور فل، الاتصالات الجديدة راح تترفض. لزيادة حجم الطابور، عدل قيمة `net.core.somaxconn`:


sudo nano /etc/sysctl.conf

أضف السطر التالي:


net.core.somaxconn = 65535

بعدين شغل الأمر التالي:


sudo sysctl -p

إدارة دورة حياة TCP

بروتوكول TCP مصمم ليكون حذر، وبخلي الاتصال المغلق في حالة `TIME_WAIT` لفترة طويلة (ممكن توصل لدقائق) لضمان وصول أي حزم متأخرة. في الخوادم المزدحمة، هاد الشي ممكن يؤدي لاستنفاد المنافذ المتاحة (Ephemeral Ports).

تفعيل إعادة استخدام المنافذ (net.ipv4.tcp_tw_reuse)

تفعيل `net.ipv4.tcp_tw_reuse` بسمح للنواة بإعادة استخدام المنافذ بسرعة للاتصالات الجديدة الصادرة. هاد مهم جداً لما يكون خادمك بتصل بقواعد البيانات أو الخدمات الخلفية بكثافة.


sudo nano /etc/sysctl.conf

أضف السطر التالي:


net.ipv4.tcp_tw_reuse = 1

بعدين شغل الأمر التالي:


sudo sysctl -p

**تحذير:** لا تستخدم `net.ipv4.tcp_tw_recycle`! ممكن يسبب مشاكل اتصال خطيرة للمستخدمين الي بستخدموا نفس عنوان IP (خلف NAT). هاي الخاصية تم ازالتها من النواة بسبب خطورتها.

تحسين مخازن الشبكة المؤقتة (TCP Buffers)

عشان تحصل على أقصى إنتاجية (Throughput)، وبالذات مع الملفات الكبيرة أو العملاء الي عندهم سرعات عالية، لازم تزيد حجم الذاكرة المخصصة لمخازن القراءة والكتابة لبروتوكول TCP (`tcp_rmem` و `tcp_wmem`).


sudo nano /etc/sysctl.conf

أضف الأسطر التالية:


net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 87380 33554432

بعدين شغل الأمر التالي:


sudo sysctl -p

الأرقام هاي بتمثل: الحد الأدنى، القيمة الافتراضية، والحد الأقصى لحجم المخزن المؤقت. بتقدر تعدلهم حسب احتياجاتك.

**نصيحة:** راقب استهلاك الذاكرة الكلي للخادم عشان تتأكد انك ما بتستهلك كل الموارد المتاحة.

خلاصة

ضبط النواة (Kernel Tuning) هو عملية مهمة جداً لتحسين أداء خوادم Linux، وبالذات الخوادم الي بتشتغل تحت ضغط عالي. من خلال تعديل بعض المعلمات، بتقدر تزيد عدد الملفات المفتوحة، وتحسن إدارة الاتصالات، وتزيد إنتاجية الشبكة. تذكر، كل خادم له احتياجاته الخاصة، لهيك لازم تجرب وتراقب الأداء بعد كل تغيير. 👍

**نصيحة أخيرة:** قبل ما تعمل أي تغيير، اعمل نسخة احتياطية من ملف `sysctl.conf`! عشان تقدر ترجع للإعدادات الأصلية إذا صار أي مشكلة. بالتوفيق! 🚀

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

برمجة وقواعد بيانات

تحديثات قاعدة البيانات بدون توقف: كيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من جحيم التوقفات المجدولة؟

هل سئمت من إيقاف الخدمة مع كل تحديث لهيكلة قاعدة البيانات؟ أشارككم قصة حقيقية وكيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من ليالي النشر الطويلة والمُجهدة،...

4 يونيو، 2026 قراءة المزيد
الشبكات والـ APIs

كانت إعادة المحاولة كارثة: كيف أنقذتنا مفاتيح عدم تكرار العمليات (Idempotency Keys) من جحيم الفواتير المزدوجة؟

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

4 يونيو، 2026 قراءة المزيد
الحوسبة السحابية

من التوقف التام إلى النجاة: كيف أنقذتنا استراتيجية “الضوء المرشد” (Pilot Light) يوم انقطعت السحابة؟

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

4 يونيو، 2026 قراءة المزيد
التوظيف وبناء الهوية التقنية

كانت مهمتي البرمجية للاختبار مجرد كود: كيف أنقذني توثيق القرارات من جحيم الصمت بعد المقابلة؟

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

4 يونيو، 2026 قراءة المزيد
التكنلوجيا المالية Fintech

من الانتظار لأيام إلى الدفع في ثوانٍ: كيف أنقذتنا شبكات الدفع الفوري من جحيم التحويلات البنكية؟

أسرد لكم من واقع تجربتي كـ "أبو عمر"، كيف عانينا من بطء وتكلفة التحويلات البنكية الدولية، وكيف جاءت شبكات الدفع الفوري ومعيار ISO 20022 لتكون...

4 يونيو، 2026 قراءة المزيد
البنية التحتية وإدارة السيرفرات

كان كل خادم لدينا ‘ندفة ثلج’ فريدة: كيف أنقذنا ‘الكود كبنية تحتية’ (IaC) من جحيم الانجراف اليدوي؟

في هذه المقالة، أشارككم قصة حقيقية من قلب المعركة التقنية مع "خوادم ندفات الثلج" الفوضوية. سنغوص في مفهوم "الكود كبنية تحتية" (IaC) وكيف أن أدوات...

4 يونيو، 2026 قراءة المزيد
اختبارات الاداء والجودة

كانت تغطية الاختبارات 100% لكن الأخطاء تتسرب: كيف أنقذنا “الاختبار الطفري” من جحيم الثقة الزائفة؟

كنا نظن أن تغطية الاختبار بنسبة 100% هي درعنا الواقي، لكن الأخطاء كانت تتسلل إلى الإنتاج كاللصوص في ليل بهيم. اكتشف كيف أنقذنا "الاختبار الطفري"...

4 يونيو، 2026 قراءة المزيد
البودكاست