Il arrive que le serveur soit surchargé pour différentes raisons. Afin de déterminer la surcharge CPU actuelle,
le serveur ClickHouse calcule le rapport entre le temps d’attente CPU (métrique OSCPUWaitMicroseconds) et le temps d’activité
(métrique OSCPUVirtualTimeMicroseconds). Lorsque le serveur est surchargé au-delà d’un certain rapport,
il peut être judicieux d’écarter certaines requêtes, voire de rejeter des demandes de connexion, afin de ne pas augmenter davantage la charge.
Il existe un paramètre du serveur, os_cpu_busy_time_threshold, qui contrôle le temps d’activité minimal à partir duquel on considère que le CPU
effectue un travail utile. Si la valeur actuelle de la métrique OSCPUVirtualTimeMicroseconds est inférieure à cette valeur,
la surcharge CPU est considérée comme nulle.
Le rejet des requêtes est contrôlé par les paramètres au niveau de la requête min_os_cpu_wait_time_ratio_to_throw et
max_os_cpu_wait_time_ratio_to_throw. Si ces paramètres sont définis et que min_os_cpu_wait_time_ratio_to_throw est inférieur
à max_os_cpu_wait_time_ratio_to_throw, la requête est alors rejetée et l’erreur SERVER_OVERLOADED est générée
avec une certaine probabilité si le ratio de surcharge est au moins égal à min_os_cpu_wait_time_ratio_to_throw. Cette probabilité
est déterminée par interpolation linéaire entre les ratios minimum et maximum. Par exemple, si min_os_cpu_wait_time_ratio_to_throw = 2,
max_os_cpu_wait_time_ratio_to_throw = 6 et cpu_overload = 4, alors la requête sera rejetée avec une probabilité de 0.5.
Le rejet des connexions est contrôlé par les paramètres au niveau du serveur min_os_cpu_wait_time_ratio_to_drop_connection et
max_os_cpu_wait_time_ratio_to_drop_connection. Ces paramètres peuvent être modifiés sans redémarrer le serveur. Le principe de
ces paramètres est similaire à celui du rejet des requêtes. La seule différence ici est que, si le serveur est surchargé,
la tentative de connexion sera rejetée côté serveur.
Avertissements de surcharge des ressources
ClickHouse consigne également des avertissements de surcharge du CPU et de la mémoire dans la table system.warnings lorsque le serveur est en surcharge. Vous pouvez
personnaliser ces seuils dans la configuration du serveur.
Exemple
<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>
Dernière modification le 29 juin 2026