تحسين نواة لينكس

لجعل النظام يدعم تزامنًا أكبر، بالإضافة إلى ضرورة تثبيت توسيع الحدث، فإن تحسين نواة لينكس أيضًا في غاية الأهمية. كل تحسين كل واحد منها مهم جدًا، يجب تنفيذها بالتتابع.

تفسير المعلمات:

max-file: تشير إلى عدد مقبضات الملفات التي يمكن فتحها على مستوى النظام. هذا يتعلق بالنظام بأكمله، وليس بالمستخدم فقط.

ulimit -n: تشير إلى التحكم في عدد مقبضات الملفات التي يمكن فتحها على مستوى العمليات. يتعلق بالملفات المتاحة للمستخدم الحالي وعملياتها التي تم تشغيلها من خلال shell الحالي.

للتحقق من عدد مقبضات الملفات القابلة للفحص على مستوى النظام: cat /proc/sys/fs/file-max

افتح الملف /etc/sysctl.conf، وأضف الإعدادات التالية

# هذا المعامل يحدد عدد TIME_WAIT في النظام، إذا تجاوز القيمة الافتراضية سيتم حذفها فورًا
net.ipv4.tcp_max_tw_buckets = 20000
# يحدد الحد الأقصى لطول قائمة الاستماع لكل منفذ في النظام، هذا معلم عالمي
net.core.somaxconn = 65535
# العدد الأقصى لطلبات الاتصال غير المؤكدة التي يمكن حفظها في قائمة الانتظار
net.ipv4.tcp_max_syn_backlog = 262144
# الحد الأقصى لعدد الحزم المسموح بإرسالها إلى قائمة الانتظار عندما تكون سرعة استقبال الحزم أكبر من سرعة المعالجة في النواة
net.core.netdev_max_backlog = 30000
# هذا الخيار قد يؤدي إلى انتهاء صلاحية العملاء في الشبكات NAT، يُنصح بضبطه على 0. تم إزالة tcp_tw_recycle من نواة لينكس بدءًا من 4.12، إذا تلقيت الخطأ "No such file or directory" يمكنك تجاهله
net.ipv4.tcp_tw_recycle = 0
# العدد الإجمالي للملفات التي يمكن لجميع العمليات فتحها في النظام
fs.file-max = 6815744
# حجم جدول تتبع الجدار الناري. ملاحظة: إذا لم يكن الجدار الناري مفعلًا، فستظهر رسالة الخطأ: "net.netfilter.nf_conntrack_max" هو مفتاح غير معروف، يمكنك تجاهل ذلك
net.netfilter.nf_conntrack_max = 2621440
net.ipv4.ip_local_port_range = 10240 65000

قم بتشغيل sysctl -p لتفعيل الإعدادات على الفور.

ملاحظة:

يمكن ضبط خيارات عديدة في /etc/sysctl.conf، يمكن إعداد خيارات أخرى بناءً على احتياجات بيئتك.

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

تعيين إعدادات عدد الملفات المفتوحة في النظام لحل مشكلة too many open files تحت ضغط التزامن العالي. هذا الخيار يؤثر مباشرة على عدد الاتصالات العميلة التي يمكن أن يستوعبها عملية واحدة.

Soft open files هو معلمة نظام لينكس تؤثر على الحد الأقصى لمقبضات الملفات التي يمكن لعملية واحدة فتحها، هذه القيمة ستؤثر على عدد الاتصالات للمستخدمين المحتفظ بها من قبل عملية واحدة في التطبيقات التي تعتمد على الاتصالات الطويلة مثل الدردشة. يمكنك رؤية قيمة هذه المعلمة من خلال تنفيذ ulimit -n. إذا كانت 1024، فهذا يعني أن العملية الواحدة يمكنها الاحتفاظ بما يصل إلى 1024 اتصال فقط في الوقت نفسه (لأن هناك مقبضات ملفات أخرى مفتوحة). إذا كان هناك 4 عمليات محتفظ بها لاتصالات المستخدمين، فلن يتجاوز العدد الإجمالي للاتصالات 4*1024، مما يعني أنه يمكن دعم ما يصل إلى 4x1024 مستخدم على الإنترنت. يمكنك زيادة هذا الإعداد بحيث يمكن للخدمة المحافظة على المزيد من اتصالات TCP.

طرق تعديل Soft open files:

الطريقة الأولى: في الطرفية، قم بتشغيل ulimit -HSn 102400، ثم أعد تشغيل workerman.

هذه فقط فعالة في الطرفية الحالية، عند الخروج، سيعود open files إلى القيمة الافتراضية.

الطريقة الثانية: في نهاية ملف /etc/profile، أضف السطر ulimit -HSn 102400، بحيث يتم تنفيذ ذلك تلقائيًا في كل مرة يتم فيها تسجيل الدخول إلى الطرفية. بعد التغيير، تحتاج إلى إعادة تشغيل workerman.

الطريقة الثالثة: لجعل تعديل عدد open files دائمًا، تحتاج إلى تعديل ملف التكوين: /etc/security/limits.conf. في نهاية هذا الملف، أضف:

* soft nofile 1024000
* hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000

هذه الطريقة تتطلب إعادة تشغيل الخادم لتصبح فعالة.