في اليومين الماضيين، قمت بإنشاء مجموعة من خوادم Apache. يحتوي كل خادم على ذاكرة 4G ويستخدم وضع prefork. كان عدد الاتصالات التي تم تعيينها في البداية قليلًا جدًا واستغرق الأمر وقتًا طويلاً للاستجابة لطلبات المستخدمين لقد قمت بتعديل ملف التكوين Apache 2.0 httpd.conf:
يقتبس
# الشوكة المسبقة MPM
# StartServers: عدد عمليات الخادم للبدء
# MinSpareServers: الحد الأدنى لعدد عمليات الخادم التي يتم الاحتفاظ بها احتياطيًا
# MaxSpareServers: الحد الأقصى لعدد عمليات الخادم التي يتم الاحتفاظ بها احتياطيًا
# MaxClients: الحد الأقصى لعدد عمليات الخادم المسموح لها بالبدء
# MaxRequestsPerChild: الحد الأقصى لعدد الطلبات التي تخدمها عملية الخادم
خوادم البداية 10
الخوادم الصغيرة 10
ماكس سبيرسيرفر 15
حد الخادم 2000
ماكس كلاينتس 2000
الحد الأقصى للطلبات لكل طفل 10000
تحقق من عدد عمليات httpd (أي عدد الطلبات المتزامنة التي يمكن لـ Apache التعامل معها في وضع التفرع المسبق):
أمر لينكس:
يقتبس
ملاحظة -ef |. grep httpd |
مثال لنتيجة الإرجاع:
1388
يشير إلى أن Apache يمكنه التعامل مع 1388 طلبًا متزامنًا، ويمكن تعديل هذه القيمة تلقائيًا بواسطة Apache وفقًا للتحميل. وصلت قيمة الذروة لكل خادم في مجموعتي إلى 2002.
تحقق من عدد الطلبات المتزامنة لـ Apache وحالة اتصال TCP الخاصة به:
أمر لينكس:
يقتبس
netstat -n |.awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
(هذا البيان يأتي من حصلت عليها من السيد وانغ، المدير الفني لقسم أعمال مجتمع سينا التفاعلي، وهو أمر جيد جدًا)
مثال لنتيجة الإرجاع:
آخر_الإجابة 5
SYN_RECV 30
تأسست عام 1597
FIN_WAIT1 51
FIN_WAIT2 504
وقت الانتظار 1057
يشير SYN_RECV إلى عدد الطلبات التي تنتظر المعالجة؛ ويشير ESTABLISHED إلى حالة نقل البيانات العادية؛ ويشير TIME_WAIT إلى عدد الطلبات التي تمت معالجتها والتي تنتظر انتهاء المهلة.
فيما يتعلق بالتغيرات في حالة TCP، يمكن رؤيتها بوضوح من الشكل التالي:
الحالة: الوصف مغلق: لا يوجد اتصال نشط أو قيد التقدم الاستماع: الخادم ينتظر المكالمات الواردة SYN_RECV: وصل طلب اتصال، في انتظار التأكيد SYN_SENT: بدأ التطبيق، وفتح اتصال تم تأسيسه: حالة نقل البيانات العادية FIN_WAIT1: يقول التطبيق أنه مكتمل FIN_WAIT2: وافق الجانب الآخر على إصدار ITMED_WAIT: انتظر حتى تموت جميع الحزم الإغلاق: يحاول كلا الجانبين الإغلاق في نفس الوقت TIME_WAIT: قام الجانب الآخر بتهيئة الإصدار LAST_ACK: انتظر حتى تموت جميع الحزم