حرف O

قاتل نفاذ الذاكرة

OOM Killer

آخر تحديث: 2026-10-10
مستوى الشرح اختر المستوى التقني المناسب لك

الشرح المبسط

تخيل أن جهاز الكمبيوتر هو مطعم مزدحم، والطاولات تمثل الذاكرة العشوائية (RAM). عندما تمتلئ كل الطاولات بالطلبات، قد يتوقف المطعم عن العمل بالكامل. هنا يتدخل قاتل نفاذ الذاكرة (OOM Killer) كحارس أمن لإنقاذ الموقف. يقوم هذا الحارس بالبحث عن البرنامج الذي يحتجز أكبر عدد من الطاولات ويقوم بطرده (إغلاق البرنامج) للحفاظ على استقرار نظام التشغيل (Operating System) ومنعه من الانهيار الشامل، مما يسمح للبرامج الأخرى بمواصلة عملها.

الشرح التقني المتقدم

يعتبر قاتل نفاذ الذاكرة (OOM Killer) آلية حماية حيوية مدمجة داخل نواة لينكس (Linux Kernel) تعمل في الخلفية لمراقبة استهلاك الموارد وحماية النظام (System) من الانهيار الشامل عند استنفاد المساحة المتاحة.

كيف يختار النظام العملية الضحية؟

يعتمد النظام على خوارزمية دقيقة لتقييم كل عملية وتحديد نقاط الذاكرة (OOM Score) الخاصة بها لاختيار الضحية المناسبة:

ملف التقييم (oom_score): يقوم النظام بتسجيل هذه النقاط في مسار (Path) مخصص لكل عملية داخل المجلد الوهمي /proc، حيث تمثل الدرجة الأعلى أولوية كبرى للإنهاء.

التحقق من حالة العملية المقتولة (مع استخدام dmesg)

عند حدوث نفاذ في الذاكرة العشوائية (RAM) وتدخل النظام، يمكنك مراجعة سجلات النواة لمعرفة العملية التي تم استهدافها وإنهاؤها:

أمر التنفيذ:

dmesg | grep -i "killed process"

توضيح لما يحدث في الخلفية والخيارات التقنية المتاحة:

  • النقطة الأولى: يتم فحص مخرجات أمر dmesg لرؤية اسم العملية (Process) ورقم التعريف الخاص بها، بالإضافة لحجم الذاكرة التي كانت تستهلكها قبل القتل.
  • النقطة الثانية: يمكن لمديري النظام (System Administrators) حماية الخدمات الحرجة مثل قواعد البيانات عن طريق تعديل ملف oom_score_adj لتقليل احتمالية استهدافها.

ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)

لا تعتمد على هذه الآلية كحل يومي أو دائم لمشاكل استهلاك الذاكرة في خادمك (Server). الممارسة الأفضل هي ضبط استهلاك الموارد لتطبيقاتك وإضافة مساحة تبديل (Swap Space) كافية لتجنب تفعيلها من الأساس.

المصادر المعتمدة :