PmaControl logo PmaControl
  • مرحباً
  • PmaControl
    • وكلاء الذكاء الاصطناعي 13 وكلاء محليين
    • عروضنا المجتمع، السحابة، محليًا، المميز
    • التوثيق أدلة، API، الهندسة المعمارية
    • السوق المكونات الإضافية للمجتمع
    • عملاء أكثر من 28 شركة
    • الأسئلة الشائعة 25 سؤالا / 7 فئات
    قواعد البيانات
    • ماريا دي بي 31 مادة
    • ماي إس كيو إل 11 مادة
    • مجموعة جاليرا 6 عناصر
    • ماكس سكيل 3 عناصر
    • ProxySQL 2 عناصر
    • أمازون أورورا ماي إس كيو إل 0 العناصر
    • قاعدة بيانات أزور 0 العناصر
    • انقر البيت 0 العناصر
    • GCP CloudSQL 0 العناصر
    • بيركوناسيرفر 0 العناصر
    • متجر واحد 0 العناصر
    • تي دي بي 0 العناصر
    • سرعة 0 العناصر
    الحلول
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • Observabilité SQL المراقبة والتنبيهات والطوبولوجيا
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2
    • Migration & upgrade صفر توقف عن العمل، pt-osc، gh-ost
  • عروضنا
  • موارد
    • التوثيق الأدلة الفنية وواجهات برمجة التطبيقات
    • مركز تحسين MySQL مؤشر تخفيض السعر والمقاييس والإعدادات والحوادث
    • الأسئلة الشائعة 25 سؤالا متكررا
    • الشهادات ملاحظات العملاء وحالات الاستخدام
    • مدونة مقالات ورؤى
    • خريطة الطريق الميزات القادمة
    مجالات الخبرة
    • Observabilité SQL المراقبة والتنبيهات وطوبولوجيا Dot3
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2، ISO 27001
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Performance & optimisation ملخصات، شرح، ضبط
    • Migration & upgrade صفر توقف عن العمل، pt-osc
    روابط سريعة
    • جيثب ويكي 26 صفحة - التثبيت والمحرك والمكونات الإضافية
    • كود المصدر مستودع جيثب الرسمي
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • احجز عرضًا توضيحيًا 30 دقيقة - هندسة معمارية حقيقية
  • دعم 24 × 7
  • احجز عرضًا توضيحيًا
احجز عرضًا توضيحيًا
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
← العودة إلى بلوق

OOM Killer: كيف أغرقت 768 ميجابايت من الجلسة 16 جيجابايت من ذاكرة الوصول العشوائي

تم النشر بتاريخ 2 أبريل 2026 بواسطة Aurélien LEQUOY
mariadb oom-killer performance-tuning systemd memory-management
يشارك X LinkedIn Facebook Email PDF
OOM Killer: كيف أغرقت 768 ميجابايت من الجلسة 16 جيجابايت من ذاكرة الوصول العشوائي

ملخص تنفيذي

MariaDB لا يتوقف بسبب تلف أو مشكلة Galera أو خطأ SQL. Kernel Linux يقتل العملية mariadbd بسبب تجاوز سعة الذاكرة.

الدليل واضح في systemd وسجل kernel:

mariadb.service: Failed with result 'oom-kill'
Out of memory: Killed process 1177 (mariadbd) total-vm:22267612kB, anon-rss:16649820kB
Memory cgroup out of memory: Killed process 1146610 (mariadbd)

البيئة

مكون القيمة
إجمالي ذاكرة الوصول العشوائي 19.5 جيجا
مبادلة ~1 جيجابايت
سيستيم دي ميموري ماكس 16 جيجا
innodb_buffer_pool_size 2 جيجابايت (تقليص تلقائي → 1 جيجابايت)
rocksdb_block_cache_size 4 جيجا
tmp_table_size (تجاوز الحذف) 768 ميجا
max_heap_table_size (تجاوز الاسترداد) 768 ميجا
sort_buffer_size 32 ميجا
max_connections 100

ماذا يحدث قبل القتل

يكتشف MariaDB ضغط الذاكرة ويحاول حماية نفسه عن طريق تقليل تجمع المخزن المؤقت InnoDB:

Memory pressure event shrunk innodb_buffer_pool_size=1536m from 2048m
→ 1280m → 1152m → 1088m → 1056m → 1040m → 1032m → 1024m
Memory pressure event disregarded; innodb_buffer_pool_size=1024m,
  innodb_buffer_pool_size_auto_min=1024m

لقد قام InnoDB بالفعل بتقليل تجمع المخزن المؤقت الخاص به إلى الحد الأدنى (1 جيجابايت). ولكن هذا ليس كافيا. المستهلكون الآخرون لا يتراجعون.

حساب الحالة الأسوأ

مع 100 اتصال متزامن، أسوأ استهلاك للذاكرة لكل جلسة:

100 × (768 MB tmp_table + 768 MB heap + 32 MB sort) = ~153 GB

من الواضح أنه لا تقوم جميع الجلسات بإنشاء جداول مؤقتة بحجم 768 ميجابايت. لكن الأمر لا يستغرق سوى 20 جلسة لإجراء استعلامات باستخدام GROUP BY أو ORDER BY على مجموعات بيانات كبيرة لتفجير الـ 16 جيجابايت:

InnoDB buffer pool :   1 GB (shrunk)
RocksDB cache :        4 GB (fixe, ne recule pas)
20 sessions × 768 MB : 15 GB
Total :                20 GB → kill

العامل المشدد: عاصفة الاتصال ProxySQL

قبل OOM مباشرةً، يعرض السجل MariaDB الاتصالات المجهضة جماعيًا من 10.68.68.103 (ProxySQL):

Aborted connection ... user: 'unauthenticated' host: '10.68.68.103'
Too many connections

المزيد من الاتصالات = المزيد من ذاكرة الجلسة = المزيد من الضغط.

الإصلاح

إجراءات فورية

  1. تقليل ذاكرة الجلسة:
tmp_table_size = 128M
max_heap_table_size = 128M
sort_buffer_size = 8M
  1. الرجوع إلى دورة systemd:
MemoryMax=18G
  1. تدقيق ذاكرة التخزين المؤقت RocksDB — قد يكون حجمها 4 جيجابايت أكبر من اللازم:
rocksdb_block_cache_size = 2G

إجراءات متوسطة المدى

  • حذف ملف Relem الذي يتجاوز القيم (/etc/mysql/releem.conf.d/z_aiops_mysql.cnf)
  • مراقبة memory_mysqld عبر PmaControl للتنبيه قبل القتل
  • قم بتكوين ProxySQL باستخدام max_connections على الجانب الخلفي أقل من max_connections MariaDB

ما ليس كذلك

هذا ليس:

  • فشل بدء التشغيل
  • انتعاش Galera مكسور
  • datadir الفاسدة
  • مشكلة في واصفات الملفات

تمت إعادة تشغيل MariaDB بشكل نظيف وإرجاع active (running) على الفور.

الخلاصة

دفعت أداة الضبط التلقائي (Relem) tmp_table_size إلى 768 ميجابايت - وهي قيمة تبدو معقولة بمعزل عن غيرها. ولكن عند دمجه مع الحد الأقصى لسعة النظام الذي يبلغ 16 جيجابايت، وذاكرة التخزين المؤقت RocksDB التي تبلغ 4 جيجابايت وعواصف الاتصال ProxySQL، يصبح قنبلة موقوتة.

يتم حساب ذاكرة خادم MariaDB في أسوأ الحالات، وليس في الحالة المتوسطة.

يشارك X LinkedIn Facebook Email PDF
← العودة إلى بلوق

تعليقات (0)

لا توجد تعليقات حتى الآن.

اترك تعليقا

PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
إشعارات قانونية GitHub اتصال
لا تنتظر وقوع الحادث حتى تفهم هندستك المعمارية. © 2014-2026 PmaControl — 68Koncept