Docker / Compose وعقود التشغيل الموثوقة / الدرس 11
حدود الموارد والسجلات والفشل المحدود
خطط للمعالج والذاكرة وعدد العمليات واحتفاظ السجلات كميزانيات مستقلة.
في هذه الصفحة
أهداف الدرس
- اشرح خنق المعالج وفرض الذاكرة وحد العمليات.
- اربط أدلة التشغيل دون وصفات حجم عامة.
الحد قيد لا تقدير للسعة
لا تحجز الحاوية تلقائياً حصة آمنة من كل الموارد. قد تنافس العملية على المعالج والذاكرة والعمليات والقرص والشبكة. ابدأ بالقياس وسعة المضيف وهامش المحرك والنظام. قد يوقف حد الذاكرة تسرباً ولا يحسنه، وقد يزيد حد المعالج التأخير بالخنق رغم توفر الذاكرة.
حدد ضوابط منفصلة للموارد المختلفة
ميزانية المثال توضيحية لا توصية إنتاجية. تضع mem_limit حداً صلباً و mem_reservation قيداً ألين و cpus تخصيصاً للمعالج و pids_limit سقفاً للعمليات. يعتمد التنفيذ على المضيف و cgroups والوضع والمنصة. افحص الإعداد والسلوك قبل ادعاء ضمان مماثل في كل مكان.
services:
api:
image: parcel-api:lab
cpus: 0.5
mem_limit: 256m
mem_reservation: 128m
pids_limit: 64
يعلن النموذج نصف معالج وحد ذاكرة 256m وحجزاً أدنى وسقف 64 عملية. لا يثبت ملاءمة الخدمة أو تنفيذ المضيف للحدود. يلزم قياس حمل وفحص فعلي في بيئة مصرح بها مستقلة.
فسر الأعراض قبل تغيير الميزانية
تشير العملية المقتولة والطلب البطيء وفشل الفحص وإنشاء العمليات إلى مسارات مختلفة. تفيد OOMKilled للذاكرة، بينما يبطئ خنق المعالج غالباً العمل. وقد يمنع عدد العمليات إنشاء عمال رغم الذاكرة. اربط الحالة والاتجاهات وضغط المضيف والأوقات؛ فقد تنقل زيادة كل الحدود الحادثة إلى المضيف.
حد السجلات دون فقد الأدلة
يرسل المثال سجلات HTTP إلى stderr. يجمع مشغل السجلات المخرجات وفق الإعداد، وتختلف سجلات الملفات. يحد التدوير نمو القرص وقد يمحو الأدلة مبكراً. حدد الاحتفاظ والحجب والنقل والصلاحيات معاً؛ فلا تضمن الإعادة أرشفة آمنة، وقد تظهر أسرار إن طبعها التطبيق.
services:
api:
image: parcel-api:lab
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
تطلب الخيارات النصية التدوير حول الحجم المحدد وعدداً محدوداً من الملفات للحاوية. ليست ضماناً صارماً لكل قرص المضيف ولا تشمل ملفات التطبيق أو المجمع الخارجي. ولا يثبت تغيير الافتراضي اعتماد الحاويات القديمة له.
قس الحالة المستقرة والفشل
راقب الذاكرة بعد الإحماء والدفعات والتزامن والخنق ومعدل السجل والتعافي، وأدرج البدء والإغلاق لا الخمول فقط. اترك سعة للتشخيص والاعتماديات دون نمو مطلق. سجل الصورة والحدود والحمل ووضع المضيف وفسر الاختناق المدعوم بالدليل. لا تستنتج إنتاجية من المثال الصغير وحده.
الأخطاء الشائعة وإصلاحها
اعتُبر 137 دليلاً قاطعاً على تسرب ذاكرة.
- لماذا يحدث؟
- فُسر الرمز دون أدلة الذاكرة والتوقيت.
- كيف تصلحه؟
- اربط OOMKilled والحدود والنمو والأحداث.
- كيف تتجنب تكراره؟
- احفظ القياسات وميّز التسرب والدفعة والإيقاف القسري.
تفشل فحوص الصحة تحت ضغط المعالج فقط.
- لماذا يحدث؟
- يؤخر الخنق التطبيق أو الفحص بعد المهلة.
- كيف تصلحه؟
- راجع الطلب المقاس وتكلفة الفحص والمهل معاً.
- كيف تتجنب تكراره؟
- اختبر الصحة تحت الحمل ضمن الميزانية.
يمتلئ القرص رغم حدود الذاكرة.
- لماذا يحدث؟
- لا تحد الذاكرة ملفات السجل أو البيانات أو ذاكرة البناء.
- كيف تصلحه؟
- حدد مالك التخزين وطبق احتفاظه المعتمد.
- كيف تتجنب تكراره؟
- حدد ميزانية القرص والسجلات مستقلة عن الذاكرة والمعالج.
اختبر فهمك
1. هل تصلح مضاعفة الذاكرة تأخير خنق المعالج؟
اعرض الحل المشروح
ليس حين يكون المعالج القيد. قارن الخنق والاستخدام بأوقات الطلب قبل تعديل الذاكرة. قد تستهلك الزيادة هامش المضيف دون تغيير الاختناق؛ فاتبع القياس.
2. لماذا قد يضر تدوير سريع بالتحقيق؟
اعرض الحل المشروح
قد يزيل الخطأ الأول قبل الفحص. طابق الاحتفاظ مع تأخر التحقيق والحجم وانقل الأدلة إلى تخزين دائم مضبوط، مع الحجب والصلاحيات بدلاً من حفظ غير محدود على المضيف.
أهم ما تعلمته
- تحتاج الموارد والسجلات والبيانات الدائمة إلى ميزانيات مستقلة.
- تحد القيود الآثار وتحدد القياسات العلاج الصحيح.