Иногда сервер может быть перегружен по разным причинам. Чтобы определить текущую перегрузку 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, то при коэффициенте перегрузки не ниже min_os_cpu_wait_time_ratio_to_throw
запрос отклоняется с некоторой вероятностью и генерируется ошибка SERVER_OVERLOADED. Вероятность
определяется как линейная интерполяция между минимальным и максимальным коэффициентами. Например, если 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, когда server перегружен. Эти пороги можно
настроить в конфигурации server.
Пример
<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>
Последнее изменение 10 июня 2026 г.