毎夜行われている、ログローテート(logrotate)の時間(デフォルト朝4:02)が、MRTGで見てみると、負荷がすごく高くなっている。
何がそんなに負荷が高いのかと調べてみたら、cron.daily内のslocate.cronにて実行されている、updatedbという処理が非常に重く、iowaitが発生しまくっていた。
updatedbコマンドは、locateコマンドで使用するためのファイルインデックスDBを作成する処理らしい。
もしlocateコマンドで検索しないファイル/フォルダがある場合は、updatedbをチューニングし、db作成対象外フォルダを指定すれば負荷を下げられるらしいです。
この辺のサイトを参考に
http://www.drk7.jp/MT/archives/000912.html
ちなみに、同じようにファイルを検索する、locate と findの違いですが、
locate : updatedbにて作成されたインデックスDBを元に検索を行う。検索処理は早いのだが、DB作成後にCreate/Delete/Moveされたファイルは、うまく検索できない。
find : 特に何も考えずに、ファイルを探す。 ベタに探すので、処理が遅い。
といった感じらしいです。
そもそも、locateコマンドを使わないのであれば、updatedb自体を動かさなくても良いのかも・・・
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e "/tmp,/var/tmp,/usr/tmp,/afs,/net"
とりあえず、updatedbの -eオプションに、インデックス作成対象外とするフォルダを追加して、難を逃れました!

0