概要
OSCPUWaitMicroseconds メトリック) とビジー時間
(OSCPUVirtualTimeMicroseconds メトリック) の比率を計算します。サーバーが一定の比率を超えて過負荷になっている場合は、
負荷のさらなる増加を防ぐために、一部のクエリを破棄したり、場合によっては接続リクエストを拒否したりするのが適切です。
CPU が何らかの有用な処理を行っていると見なすための最小ビジー時間を制御する server setting
os_cpu_busy_time_threshold があります。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 で制御されます。これらの設定は、サーバーを再起動せずに変更できます。これらの設定の考え方は、
クエリの拒否と同様です。異なるのは、この場合、サーバーが過負荷になると、
接続の試行がサーバー側で拒否される点だけです。
リソース過負荷の警告
system.warnings テーブルに記録します。これらのしきい値は、サーバー設定でカスタマイズできます。
例