الرئيسية
مقالات عامة
مقالات رياضية
مقالات تقنية
مقالات فنية
مقالات الصحة والتغذية
مقالات اسلامية
مقالات علمية

حل مشكلة بطؤ سيرفر لينوكس بسبب زيادة عددة الاتصالات nf_conntrack: table full, dropping packet


تم النشر بتاريخ 24-05-02
حل مشكلة بطؤ سيرفر لينوكس بسبب زيادة عددة الاتصالات nf_conntrack: table full, dropping packet

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

وتسمى هذه الحالة: nf_conntrack: table full, dropping packet

 

تشخيص هذه المشكلة 

يمكن تشخيص المشكلة من خلال فحص عدد الاتصالات النشطة على كرت الشبكة الخاصة بالسيرفر من خلال أمر الشيل التالي

cat /proc/sys/net/netfilter/nf_conntrack_count

 

ومقارنتها بالقيمة الحالية لقدرة استيعاب عدد الاتصالات، والتي يمكن الوصول لها بأمر الشيل التالي

cat /proc/sys/net/netfilter/nf_conntrack_max

 

حل المشكلة

يمكن حل المشكلة من خلال التالي، قم بتغيير القيمة مؤقتًا إلى قيمة أعلى (مع ملاحظة أن زيادة هذا الرقم من المحتمل أن يؤدي إلى زيادة استخدام موارد النظام وتحميلها لأنه سيتعامل مع المزيد من الاتصالات في المرة الواحدة)

ويمكن تنفيذ ذلك من خلال امر الشيل التالي في حال رغبنا الى مضاعفة عدد الاتصالات الى الرقم 524288 

echo 524288 > /proc/sys/net/netfilter/nf_conntrack_max

 

وللمساعدة في تقليل المشكلات المتعلقة بعدد كبير من الاتصالات، قد ترغب في التفكير في تقليل مقدار الوقت الذي ينتظره الخادم حتى يقوم بإغلاق/انقضاء مهلة الاتصالات.

للقيام بذلك، أضف الأسطر التالية إلى نهاية /etc/sysctl.conf

net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 60

 

حل آخر للمشكلة 

يوجد حل أخر لهذه المشكلة، وهو العمل على تفريغ جدول كرت الشبكة من سجلات الاتصال بشكل دوري.



مقالات جديدة