Às vezes, o servidor pode ficar sobrecarregado por vários motivos. Para determinar a sobrecarga atual da CPU,
o servidor ClickHouse calcula a proporção entre o tempo de espera da CPU (métrica OSCPUWaitMicroseconds) e o tempo em uso
(métrica OSCPUVirtualTimeMicroseconds). Quando o servidor fica sobrecarregado acima de uma certa proporção,
faz sentido descartar algumas consultas ou até mesmo recusar solicitações de conexão para não aumentar ainda mais a carga.
Há uma configuração no servidor, os_cpu_busy_time_threshold, que controla o tempo mínimo em uso para considerar que a CPU
está realizando algum trabalho útil. Se o valor atual da métrica OSCPUVirtualTimeMicroseconds estiver abaixo desse valor,
assume-se que a sobrecarga da CPU é 0.
O comportamento de rejeição de consultas é controlado pelas configurações no nível da consulta min_os_cpu_wait_time_ratio_to_throw e
max_os_cpu_wait_time_ratio_to_throw. Se essas configurações estiverem definidas e min_os_cpu_wait_time_ratio_to_throw for menor
que max_os_cpu_wait_time_ratio_to_throw, a consulta será rejeitada e o erro SERVER_OVERLOADED será gerado
com certa probabilidade se a taxa de sobrecarga for pelo menos min_os_cpu_wait_time_ratio_to_throw. A probabilidade
é determinada por interpolação linear entre as taxas mínima e máxima. Por exemplo, se min_os_cpu_wait_time_ratio_to_throw = 2,
max_os_cpu_wait_time_ratio_to_throw = 6 e cpu_overload = 4, a consulta será rejeitada com probabilidade de 0.5.
O encerramento de conexões é controlado pelas configurações no nível do servidor min_os_cpu_wait_time_ratio_to_drop_connection e
max_os_cpu_wait_time_ratio_to_drop_connection. Essas configurações podem ser alteradas sem reiniciar o servidor. A lógica por trás
dessas configurações é semelhante à da rejeição de consultas. A única diferença, neste caso, é que, se o servidor estiver sobrecarregado,
a tentativa de conexão será rejeitada pelo próprio servidor.
Avisos de sobrecarga de recursos
O ClickHouse também registra avisos de sobrecarga de CPU e memória na tabela system.warnings quando o servidor fica sobrecarregado. Você pode
personalizar esses limites na configuração do servidor.
Exemplo
<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>
Última modificação em 10 de junho de 2026