whoisが暴走してCPU利用率が100%になった場合の対処法


投稿日:2018年5月20日
  • 0
  • 0



このサイトはGMO VPSを利用して運営されています。OSはCent OS 6です。
サーバの状況を把握するためにdstatコマンドを利用し、norikuraで抽出し、GrowthForecastでグラフ化しています。
何かしらの異常が発生し、特定の項目がしきい値を越えるとメールで通知するように設定しています。
(この方法はこちらのページで解説しています。)

今回は通知があったわけでもなく、特に動作が遅くなったというわけでもなかったのですが、何気なくグラフを見ていたところCPUのusrが異常に上がっていることに気が付きました。

異常といっても4%程度なので、アラートは作動しません。(後に収束しているのは対策をしたため)
しかし通常時は1%にも満たないのに、急に増加しているのは気になります。
そこでtopコマンドで原因となっているプロセスを調べます。

なぜかwhoisのCPU利用率が100%になっています
通常であればアラート案件ですが、GMO VPSのCPUがマルチスレッドで高性能のため、1つのプロセスが100%に張り付いても顕在化しなかったようです。
こうして見返してみると、load acerageの値が1~2と高いようです(通常時は0.1もいかない)。load acerageの監視・通知なども併用したほうが良さそうです。

何はともあれ、とりあえず原因を調べるべくwhoisを利用しているプロセスを調べます。

# ps -ef | grep whois
root     19175 19172 99 May04 ?        13-15:40:27 whois 196.196.220.10

196.196.220.10を調べると、普通にwhoisサーバなので、whoisを利用した問い合わせが暴走の原因のようです。
whoisの問い合わせがサーバの動作に致命的な影響を与えるとは考えられないので、プロセスIDを指定して殺します(これ、怖い表現ですよねw)。

# kill -9 19175

これで無事にサーバは落ち着きました。
その後数日経過を見ていますが、ひとまずこれで問題ないようです。

検索すると同様な報告の多くはfail2banで使うwhoisが原因とのこと。
どのページに記載されている内容も似たり寄ったりで、このような現象はfail2banを数年使い続けて1度あるかないかなので、無視しても構わないが、気になるなら問い合わせを無視するために設定ファイルを変更すると良いとのこと。

私の場合はSwatchでサーバログを利用し、アクセス規制や通知を行っているのですが、その際にwhoisコマンドを利用しています。

更に詳しく調べると、whoisで利用されるjwhoisというクライアントのバグとのこと。
FedoraとRHEL 7系では対策されていますが、RHEL 6では放置されているとのこと。当然Cent OS 6系でも放置されています。

このサーバはCent OS 6で運営されており、Swatchによるセキュリティ対策を行ったのは4年前です。
その間、一度もこのような自体になっておらず、サーバへの負担も限定的であることから、特に対策はしないことにしました。
代わりにload acerageがしきい値を超えた場合に通知が来るようにして、適宜対応したいと思います。


現在のページを共有する



現在のページに関連する記事

whoisが暴走してCPU利用率が100%になった場合の対処法 サーバのログを監視するSwatchの導入方法と使い方を解説
whoisが暴走してCPU利用率が100%になった場合の対処法 手軽にデータをグラフ化するGrowthForecastのインストールと使い方
whoisが暴走してCPU利用率が100%になった場合の対処法 fluentdのFilter Pluginsを使ってイベントを自在に操る方法
whoisが暴走してCPU利用率が100%になった場合の対処法 Swatchでログを監視して、攻撃に合わせた対策を自動で実行する方法
whoisが暴走してCPU利用率が100%になった場合の対処法 CentOS5.9のMySQLを5.6.14にアップデートする方法
whoisが暴走してCPU利用率が100%になった場合の対処法 サーバリソースをリアルタイムに監視するdstatのインストールと使い方
whoisが暴走してCPU利用率が100%になった場合の対処法 /etc/cron.daily/logrotateでunexpected textエラーが発生した際の対処法

おすすめの記事

Apacheのmod_deflateでコンテンツを圧縮してサイトを高速化する方法

Apacheのmod_deflateでコンテンツを圧縮してサイトを高速化する…

ページ編集の手間を劇的に減らす、Custom Field Templateでカスタムフィールドを作る方法

ページ編集の手間を劇的に減らす、Custom Field Templateでカス…

Windows 10でpsd形式のファイルをサムネイル表示する方法

Windows 10でpsd形式のファイルをサムネイル表示する方法

Windows 10を32bit版から64bit版に変更する方法

Windows 10を32bit版から64bit版に変更する方法

エンティティとデコード用プラグイン「Entity Decode Button」を作成しました

エンティティとデコード用プラグイン「Entity Decode Button」…

誤って削除したGoogle Chromeのブックマークを復元する方法

誤って削除したGoogle Chromeのブックマークを復元する方法

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデザインに変更

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデ…

Excelでセルとセルの間をダブルクリックすると移動する機能を停止する方法

Excelでセルとセルの間をダブルクリックすると移動する機能を停…


コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。