フロントエンドの負荷

先週フロントエンドをApacheに変えてから時折フロントエンドサーバの負荷が上がっていることに気がつきました。こんな感じです。

なにが食ってるのかなと見てみると、updatedbというプロセスがCPUを食ってる模様。これは、locateコマンドが参照するDBをデイリーに更新するプロセスです。おそらく/usr/local/apache2/cache以下のキャッシュファイルもその更新対象になっていて、それで負荷が上がっているのでしょう。1つづつのファイルは小さくても、数が膨大なのでディスクアクセスに負荷がかかっているものと思われます。このプロセスはcronで起動されていて、その起動コマンドはこんなところにあります。

/etc/cron.daily/slocate.cron

内容がこんな。

#!/bin/sh
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \
              "/tmp,/var/tmp,/usr/tmp,/afs,/net"

この-eオプション以下で指定しているディレクトリが更新対象から外すディレクトリです。このように変更しました。

#!/bin/sh
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \
      "/tmp,/var/tmp,/usr/tmp,/afs,/net,/usr/local/apache2/cache"