CPU高使用率のトラブルシューティング¶
Wallarmが推奨するCPU使用率は約10-15%です。これは、フィルタリングノードが通常の10倍のトラフィックスパイクに対応できることを意味します。Wallarmノードが期待より多くのCPUを消費し、CPU使用率を下げる必要がある場合は、このガイドをご利用ください。
最も長いリクエスト処理時間を明らかにし、主要なCPU消費要因を特定するために、拡張ロギングを有効にすることで処理時間を監視してください。
WallarmによるCPU負荷を下げるために、以下の対策を実施できます:
-
NGINX構成に
limit_req
を追加するか、ノード4.6以降ではWallarm独自のレートリミティング機能を使用できます。ブルートフォース攻撃やその他の攻撃の場合、これがCPU負荷を下げる最良の方法である可能性があります。例:
limit_req
を使用する構成http { map $request_uri $binary_remote_addr_map { ~^/get $binary_remote_addr; ~^/post $binary_remote_addr; ~^/wp-login.php $binary_remote_addr; } limit_req_zone $binary_remote_addr_map zone=urls:10m rate=3r/s; limit_req_zone $binary_remote_addr$request_uri zone=allurl:10m rate=5r/s; limit_req_status 444; server { location { limit_req zone=urls nodelay; limit_req zone=allurl burst=30; } } }
-
NGINXおよびTarantoolに適切なメモリが割り当てられていることを確認します。
-
任意のフィルトレーションモードにおいて、これらのリクエストから攻撃サインを検索することなく即座にdenylistに含まれるIPからのリクエストをブロックする
on
にwallarm_acl_access_phase
ディレクティブが設定されていることを確認します。このディレクティブを有効にするとともに、誤ってAllowlistに追加されたIPや、誤ってDenylistに追加されていない対象を見つけるために、WallarmのIPリストを確認してください。ただし、この方法でCPU使用率を下げると、検索エンジンからのリクエストをスキップする結果になる可能性があります。しかしながら、この問題はNGINX構成における
map
モジュールの活用によっても解決可能です。 -
ノードバージョン4.4以降デフォルトで有効になっているlibdetectionを
wallarm_enable_libdetection off
によって無効化します。libdetectionを使用するとCPU消費が5-10%増加します。ただし、libdetectionを無効化するとSQLi攻撃検出の誤検知が増加する可能性があることを考慮する必要があります。 -
検知された攻撃の解析中に、Wallarmがリクエストの特定要素に対して誤ってルール内のパーサーまたはNGINX構成内のパーサーを使用していることが判明した場合、対象に適用されないパーサーは無効化してください。ただし、一般的にパーサーを無効化することは推奨されません。
-
リクエスト処理時間を短縮します。ただし、これにより正当なリクエストがサーバーに届かなくなる可能性があることに注意してください。