メインコンテンツまでスキップ
メインコンテンツまでスキップ

サーバーの過負荷

概要

サーバーはさまざまな理由で過負荷になることがあります。現在のCPUの過負荷を判断するために、ClickHouseサーバーはCPU待機時間(OSCPUWaitMicrosecondsメトリック)とビジー時間(OSCPUVirtualTimeMicrosecondsメトリック)の比率を計算します。サーバーが特定の比率を超えて過負荷になると、一部のクエリを破棄したり、接続要求を拒否してさらに負荷が増加しないようにすることが理にかなります。

os_cpu_busy_time_thresholdというサーバー設定があり、これはCPUが有用な作業を行っていると見なすための最小ビジー時間を制御します。OSCPUVirtualTimeMicrosecondsメトリックの現在の値がこの値未満の場合、CPUの過負荷は0と見なされます。

クエリの拒否

クエリの拒否の挙動は、クエリレベルの設定min_os_cpu_wait_time_ratio_to_throwmax_os_cpu_wait_time_ratio_to_throwによって制御されます。これらの設定が設定されていて、min_os_cpu_wait_time_ratio_to_throwmax_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 = 2max_os_cpu_wait_time_ratio_to_throw = 6cpu_overload = 4の場合、クエリは0.5の確率で拒否されます。

接続の拒否

接続の拒否は、サーバーレベルの設定min_os_cpu_wait_time_ratio_to_drop_connectionmax_os_cpu_wait_time_ratio_to_drop_connectionによって制御されます。これらの設定は、サーバーを再起動せずに変更できます。これらの設定の背後にある考え方は、クエリの拒否と同様です。この場合の唯一の違いは、サーバーが過負荷の場合、接続試行がサーバー側で拒否されることです。