深夜04時にCPU使用率急上昇

私が過去に関わっていたプロジェクトで、深夜04時にLinuxサーバのCPU使用率が急上昇しアラートが発生するという現象が発生しました(2008年月頃)。MRTGで確認すると、毎日同じ時間にCPU使用率が上昇しており稼動期間に比例してCPU使用率が高くなる傾向が見られました。この時間帯には特にジョブ登録を行なっていなかったためしばしの間「謎の現象」として扱われていました。

この時間帯にtopを仕掛けて調べたところ、「updatedb」というプロセスが原因であることが分かりました。「updatedb」を調べてみると、高速検索が可能なlocateコマンドを使用可能にするためのファイルインデックスを作成しているプロセスとのこと。

対策として以下が挙げられます
  • 日次から週次に変更する
  • 対象とするディレクトリを減らす
  • そもそもupdatedbを行なわない

調べてみるまでlocateコマンドの存在すら知らなかったため、(そういう人が運用している以上)使う可能性の低いコマンドではあるのですが、findとlocateを比較すると、locateの方が驚くほど高速でこれを全く使用できないようにしてしまうのはどうかと思い対象ディレクトリを減らすという対策を採りました。このシステムでは毎日数十万単位の帳票ファイルを作成しており、このディレクトリを対象外にしたところ大幅に改善しました。

参考サイト