Apache HTTPD / التمثيل والوكالة والسعة / الدرس 12
سعة MPM وميزانيات المهل
افهم التزامن والانتظار والكلفة والمراحل دون نسخ قيم عمال عامة.
في هذه الصفحة
أهداف الدرس
- مقارنة النماذج بالمستوى المفاهيمي المناسب.
- فصل الحد والاتصال والخلفية ونطاق المهلة.
يحدد التنفيذ معنى الخانة
تعالج prefork بالعمليات غير المخيطة وworker بخيوط داخل عمليات وevent بعض الحالات لا تزامنياً وفق المرجع. تؤثر المنصة والمرشحات والبروتوكول والوحدات، وقد يقيد تكامل غير آمن للخيوط الاختيار. لا تبدل لمجرد وصف سرعة. راجع العبء والتكامل والذاكرة وواصفات الملفات وحدود الخلفية والتوافق. لا تختار الدورة أو تبدأ أو تعيد تهيئة MPM. يجب أن يستطيع القرار تفسير ما يحتاجه التطبيق فعلاً وما الذي سيتغير في حدود التنفيذ، لا مقارنة اسمين كأن أحدهما مناسب لكل تركيب.
السقف ليس ضمان إنتاجية
تقيد MaxRequestWorkers وغيرها التزامن وفق الدلالة، وتتفاعل إعدادات العملية والخيط فلا تعظمها مستقلة. تختلف الاتصالات الدائمة والحالات الآلية وTLS والمرشحات والبروتوكولات عن العامل النشط. قد تكون الخلفية القيد مع خانات فارغة. قد يزيد السقف الطابور والذاكرة والحمل لا السرعة. لا يثبت رقم إعداد قدرة خدمة على إتمام عدد مماثل من عمليات العمل في ثانية، ولا يغني عن ملاحظة تكلفة الطلب وأنواعه والموارد التي ينتظرها قبل العودة للعميل.
صرح بالافتراض قبل الحساب
يسجل JSON أربع عمليات وخمسة وعشرين خيطاً للحساب لا للإعداد أو القياس. يستثني الحدود والاحتياط والاتصال والبروتوكول والمشاركة والكلفة. لا تنتج عنه توصية. يحتاج الفعلي عبئاً وMPM مثبتاً لا رقماً جميلاً من درس. يتعين أن يذكر أي تقرير سعة ما إذا كان يتحدث عن خيوط أو عمليات أو طلبات أو اتصالات، لأن استبدال وحدة بأخرى يمكن أن يجعل الحساب صحيحاً رياضياً وخاطئاً في معنى ما يحاول الفريق تخطيطه.
{"model":"threaded-request-slots-only","processes":4,"threads_per_process":25,"excludes":["memory","backend-limit","async-connections","protocol-specific-work"]}
القيم مدخلات مختلقة لا توجيهات موصى بها أو لقطة خادم. لا يُفحص مورد أو يغير.
تحتاج المراحل آجالاً مختلفة
للإنشاء والقراءة وانتظار keep-alive وI/O الخلفي والعمل ضوابط مختلفة. لا يبرر بطء الخلفية إضعاف حماية القراءة ولا يحد انتظار قصير كل عمل. حدد المرحلة والإلغاء. قد تكرر إعادة غير آمنة أثر عمل بعد المهلة. استخدم ميزانية مراجعة واحفظ المجهول بدل اعتبار المهلة غياب أثر. ينبغي أن توضح الخطة من يملك التحقق من اكتمال عملية خارجية، لأن توقف عميل HTTP لا يلغي بالضرورة ما تنفذه الخلفية من معاملة أو شراء أو كتابة دائمة.
احسب الخانات وتقديراً محدوداً
يضرب البرنامج الخيوط ويحسب متوسط العمل الجاري من معدل وصول وزمن وفق علاقة طوابير مبسطة. ليس benchmark أو حملاً أو ذاكرة أو جدولة. لا يصف المتوسط الذيل والانفجار والفشل. راجع الافتراض والقيود وقارن دليلاً مصرحاً مع الصحة والاستقرار والثقة. يوجه الحساب سؤالاً ولا يقدم عتبة تشغيل، كما لا تثبت مساواة متوسطين أن التوزيع أو احتمال الازدحام متماثلان عند تدفق طلبات مختلفة الكلفة أو تعطل اعتماد مشترك.
processes = 4
threads_per_process = 25
arrival_per_second = 20
mean_seconds = 0.5
print(processes * threads_per_process)
print(f"{arrival_per_second * mean_seconds:.1f}")
100
10.0
مئة خانة وعشر عمليات وسطياً بافتراض معلن. لا مرور أو حمل أو عملية أو خيط أو مهلة أو قياس أداء.
الأخطاء الشائعة وإصلاحها
يوصف MaxRequestWorkers بطلبات في الثانية مضمونة.
- لماذا يحدث؟
- اختلط التزامن بالإنتاجية والزمن.
- كيف تصلحه؟
- اربطه بالعبء والمدة والخلفية الفعلية.
- كيف تتجنب تكراره؟
- صرح بالوحدات والافتراض.
تزاد كل المهل لرد بطيء.
- لماذا يحدث؟
- دُمجت مراحل مختلفة.
- كيف تصلحه؟
- حدد المتأخر وعقده المحدود.
- كيف تتجنب تكراره؟
- افصل القراءة والخمول والعمل والإعادة.
يغرق سقف أعلى الخلفية.
- لماذا يحدث؟
- تغيرت الواجهة دون حد السلسلة.
- كيف تصلحه؟
- راجع القيد والطابور والقدرة مع المالكين.
- كيف تتجنب تكراره؟
- راقب الاستقرار والموارد مع الزمن.
اختبر فهمك
1. هل تثبت المئة مئة طلب في الثانية؟
اعرض الحل المشروح
لا. هي تزامن محدود وتتعلق الإنتاجية بالزمن والعبء والموارد والبروتوكول والخلفية. والعشر أيضاً متوسط افتراضي لا سعة مرصودة.
2. لماذا لا تكفي مهلة العميل لإعادة شراء؟
اعرض الحل المشروح
قد تكون الخلفية قبلت أو أكملت العمل قبل فقد الرد. راجع الهوية والتكرار والحالة المرجعية مع المالك. لا تثبت زيادة المهلة أو الإعادة العمياء اكتمالاً آمناً.
أهم ما تعلمته
- اختر النموذج والحد بالدليل والتوافق.
- افصل التزامن والإنتاجية والاتصال والمهلة والأثر.