الانتقال إلى المحتوى الرئيسي

نظرة عامة

قد يتعرض الخادم أحيانًا لفرط حمل CPU لأسباب مختلفة. ولتحديد المستوى الحالي لفرط حمل CPU، يحسب خادم ClickHouse نسبة وقت انتظار CPU (المقياس OSCPUWaitMicroseconds) إلى وقت الانشغال (المقياس OSCPUVirtualTimeMicroseconds). وعندما يتجاوز الحمل على الخادم نسبةً معينة، فقد يكون من المنطقي رفض بعض الاستعلامات أو حتى إسقاط طلبات الاتصال حتى لا يزداد الحمل أكثر. يوجد إعداد على مستوى الخادم باسم os_cpu_busy_time_threshold يتحكم في الحد الأدنى لوقت الانشغال اللازم لاعتبار أن CPU ينفذ عملًا مفيدًا. وإذا كانت القيمة الحالية للمقياس OSCPUVirtualTimeMicroseconds أقل من هذه القيمة، فيُفترض أن فرط حمل CPU يساوي 0.

رفض الاستعلامات

يُتحكَّم في سلوك رفض الاستعلامات من خلال إعدادات على مستوى الاستعلام هي min_os_cpu_wait_time_ratio_to_throw و max_os_cpu_wait_time_ratio_to_throw. إذا كانت هذه الإعدادات معيّنة وكان min_os_cpu_wait_time_ratio_to_throw أقل من max_os_cpu_wait_time_ratio_to_throw، فسيُرفض الاستعلام وسيُطرَح الخطأ SERVER_OVERLOADED باحتمال معيّن إذا كانت نسبة الحمل الزائد لا تقل عن min_os_cpu_wait_time_ratio_to_throw. ويُحدَّد هذا الاحتمال بالاستيفاء الخطي بين النسبتين الدنيا والعليا. على سبيل المثال، إذا كان min_os_cpu_wait_time_ratio_to_throw = 2، وmax_os_cpu_wait_time_ratio_to_throw = 6، وكان cpu_overload = 4، فسيُرفض الاستعلام باحتمال 0.5.

قطع الاتصالات

يُتحكَّم في قطع الاتصالات بواسطة الإعدادات على مستوى الخادم min_os_cpu_wait_time_ratio_to_drop_connection و max_os_cpu_wait_time_ratio_to_drop_connection. يمكن تغيير هذه الإعدادات من دون إعادة تشغيل الخادم. والفكرة وراء هذه الإعدادات مشابهة لفكرة رفض الاستعلامات. والفرق الوحيد هنا هو أنه إذا كان الخادم يعاني من حمل زائد، فستُرفض محاولة الاتصال من جانب الخادم.

تحذيرات فرط تحميل الموارد

يسجّل ClickHouse أيضًا تحذيرات فرط حمل CPU والذاكرة في جدول system.warnings عندما يكون الخادم تحت حملٍ زائد. يمكنك تخصيص هذه العتبات من خلال إعدادات الخادم. مثال

<resource_overload_warnings>
    <cpu_overload_warn_ratio>0.9</cpu_overload_warn_ratio>
    <cpu_overload_clear_ratio>0.8</cpu_overload_clear_ratio>
    <cpu_overload_duration_seconds>600</cpu_overload_duration_seconds>
    <memory_overload_warn_ratio>0.9</memory_overload_warn_ratio>
    <memory_overload_clear_ratio>0.8</memory_overload_clear_ratio>
    <memory_overload_duration_seconds>600</memory_overload_duration_seconds>
</resource_overload_warnings>
آخر تعديل في ٢٩ يونيو ٢٠٢٦