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 العربية
← العودة إلى بلوق

Galera: فهم التحكم في التدفق

تم النشر بتاريخ 28 أكتوبر 2024 بواسطة Sylvain ARBAUDIE
galera mariadb flow-control clustering tuning
يشارك X LinkedIn Facebook Email PDF
Galera: فهم التحكم في التدفق

المشكلة الأساسية

في مجموعة Galera، يجب على كافة العقد تطبيق نفس مجموعات الكتابة بنفس الترتيب للحفاظ على الاتساق. ولكن ليست كل العقد متساوية: بعضها أسرع (أجهزة حديثة، حمل خفيف)، والبعض الآخر أبطأ (أجهزة قديمة، طلبات ثقيلة).

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

التحكم في التدفق هو الآلية التي تمنع هذا الموقف. هذا هو فرملة اليد للمجموعة: عندما تكون العقدة مكتظة، فإنها تطلب من العقد الأخرى أن تبطئ.

كيف يعمل التحكم في التدفق

يعتمد التحكم في التدفق على حد بسيط: gcs.fc_limit.

تحتفظ كل عقدة Galera بقائمة انتظار تلقي (قائمة انتظار التسجيل) التي تخزن مجموعات الكتابة التي تنتظر التطبيق. عندما يتجاوز حجم قائمة الانتظار هذه gcs.fc_limit، ترسل العقدة رسالة FC_PAUSE إلى كافة العقد الأخرى في المجموعة.

عند تلقي FC_PAUSE، تتوقف العقد الأخرى عن إرسال مجموعات الكتابة الجديدة إلى العقدة البطيئة. يتم حظر عمليات الكتابة إلى المجموعة بأكملها - وهذا هو ثمن الاتساق المتزامن.

عندما تنخفض قائمة انتظار الاستقبال الخاصة بالعقدة البطيئة إلى ما دون gcs.fc_limit × gcs.fc_factor، ترسل العقدة رسالة FC_CONTINUE وتستأنف المجموعة العمل العادي.

المتغيرات الخمسة الحاسمة wsrep

لمراقبة التحكم في التدفق، هناك خمسة متغيرات للحالة ضرورية:

SHOW GLOBAL STATUS WHERE Variable_name IN (
    'wsrep_local_recv_queue',
    'wsrep_local_recv_queue_avg',
    'wsrep_flow_control_paused',
    'wsrep_flow_control_paused_ns',
    'wsrep_flow_control_sent'
);

wsrep_local_recv_queue

الحجم الحالي لقائمة انتظار Recv. في التشغيل العادي، يجب أن تكون هذه القيمة قريبة من 0. إذا ارتفعت بشكل منتظم فوق gcs.fc_limit، فإن العقدة في مشكلة.

wsrep_local_recv_queue_avg

المتوسط المتحرك لrecv الذيل. إنه المؤشر الأكثر موثوقية للكشف عن الاتجاهات. متوسط ​​فوق 0.5 يستحق التحقيق.

wsrep_flow_control_paused

جزء من الوقت المستغرق في التحكم في التدفق (بين 0 و1). إذا تجاوزت هذه القيمة 0.1 (10% من الوقت)، فهذا يعني أن الكتلة تواجه مشكلة خطيرة في الأداء.

wsrep_flow_control_paused_ns

إجمالي الوقت المستغرق في التحكم في التدفق بالنانو ثانية. مفيد لحساب وقت الاستراحة المطلق خلال فترة ما.

wsrep_flow_control_sent

عدد رسائل FC_PAUSE المرسلة بواسطة هذه العقدة. إذا أرسلت عقدة واحدة أغلبية FC_PAUSEs، فهذا هو عنق الزجاجة الذي يجب معالجته.

معلمات الضبط الستة

gcs.fc_limit

عتبة تشغيل التحكم في التدفق. القيمة الافتراضية: 16. تؤدي زيادة هذه القيمة إلى حدوث تأخير أكبر قبل تشغيل المكابح، ولكنها تزيد من استهلاك الذاكرة.

gcs.fc_factor

معامل الاسترداد. القيمة الافتراضية: 0.5. عندما يعود ذيل التسجيل إلى الأسفل إلى fc_limit × fc_factor، يتم تحرير التحكم في التدفق. مع حد fc_limit قدره 100 ومعامل fc_factor قدره 0.8، يرتاح FC عند 80 مجموعة كتابة.

wsrep_slave_threads

عدد سلاسل تطبيقات مجموعة الكتابة. المزيد من المواضيع = تطبيق أسرع لمجموعات الكتابة المستلمة = قائمة انتظار التسجيل التي يتم إفراغها بشكل أسرع. التوصية: 2 × عدد نوى وحدة المعالجة المركزية.

wsrep_cert_deps_distance

متوسط مسافة التصديق بين المعاملات. يشير إلى التوازي المحتمل. إذا كانت هذه القيمة عالية، فإن زيادة wsrep_slave_threads سيكون لها تأثير إيجابي.

gcs.recv_q_hard_limit

الحد المطلق لقائمة انتظار التسجيل بالبايت. إذا تم تجاوزها، سيتم إحباط العقدة. هذا هو الملاذ الأخير لتجنب OOM. التوصية: نصف ذاكرة الوصول العشوائي + المبادلة المتاحة.

gcs.max_throttle

الحد الأدنى لمعدل التدفق مضمون حتى في التحكم في التدفق (بين 0 و1). القيمة الافتراضية 0.25 تعني أنه حتى في الموارد البشرية، يتم الحفاظ على 25% من التدفق الطبيعي. اضبط على 0 للتوقف الكامل في الموارد البشرية.

توصيات الخبراء

بعد سنوات من إدارة مجموعات Galera في الإنتاج، إليك التوصيات الموحدة:

تحجيم المواضيع التابعة

wsrep_slave_threads = 2 × CPU_CORES

إذا كان خادمك يحتوي على 8 مراكز، فابدأ بـ wsrep_slave_threads = 16. مراقب wsrep_cert_deps_distance — إذا كان أقل من عدد الخيوط التابعة، قم بتقليله.

fc_limit يعتمد على الخيوط التابعة

gcs.fc_limit = 5 × wsrep_slave_threads

مع 16 خيط تابع، gcs.fc_limit = 80. وهذا يعطي مساحة كافية للخيوط للعمل بالتوازي دون تشغيل FC في وقت مبكر جدًا.

fc_factor للتعافي التدريجي

gcs.fc_factor = 0.8

يسمح عامل fc_factor بقيمة 0.8 (بدلاً من العامل الافتراضي 0.5) باستئناف حركة المرور بشكل تدريجي، مع تجنب تذبذبات FC_PAUSE / FC_CONTINUE.

الحد الصعب للسلامة

gcs.recv_q_hard_limit = HALF_RAM_PLUS_SWAP

على خادم به 32 جيجابايت من ذاكرة الوصول العشوائي و16 جيجابايت من المبادلة، ضع gcs.recv_q_hard_limit = 24G. هذه هي شبكة الأمان ضد OOM.

تحديد العقدة الإشكالية

عندما يتم تشغيل التحكم في التدفق بشكل متكرر، يجب تحديد العقدة البطيئة:

-- Sur chaque nœud
SELECT @@hostname,
       VARIABLE_VALUE AS fc_sent
FROM information_schema.GLOBAL_STATUS
WHERE VARIABLE_NAME = 'wsrep_flow_control_sent';

العقدة التي ترسل معظم FC_PAUSEs هي عنق الزجاجة. الأسباب المعتادة:

  • أجهزة رديئة: محركات أقراص أبطأ، وذاكرة وصول عشوائي أقل
  • استعلامات ثقيلة: جدول ALTER TABLE أو SELECT ضخم يحتكر الموارد
  • النسخ الاحتياطي قيد التقدم: يستهلك mariabackup/xtrabackup قدرًا كبيرًا من عمليات الإدخال/الإخراج
  • تحميل التطبيق غير المتوازن: هناك عدد كبير جدًا من عمليات القراءة على العقدة والتي يجب أن تطبق أيضًا مجموعات الكتابة

الخلاصة

التحكم في التدفق هو حارس الاتساق في Galera. يعد فهم كيفية عملها ومعلماتها أمرًا ضروريًا للحفاظ على مجموعة عالية الأداء.

القواعد الذهبية: slave_threads = 2 × CPU، fc_limit = 5 × threads، fc_factor = 0.8، الحد الثابت = نصف ذاكرة الوصول العشوائي + المبادلة. قم بمراقبة wsrep_flow_control_paused والتفاعل بمجرد أن تتجاوز القيمة 10%.


تم نشر هذه المقالة في الأصل على متوسط.

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

تعليقات (0)

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

اترك تعليقا

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