updatedbの負荷を削減する
updatedbの負荷を削減する
0.改訂履歴
1.はじめに
このドキュメントでは,updatedbの負荷を削減する手順を説明する.
なお,使用しているOSは,RedHat Linux ES3.0である.
2.updatedbについて
- updatedbとは,ファイル検索用データベースで,locateコマンド(実体はslocate)の結果の元となる,サーバ内のファイル名一覧を蓄えておくものである.
- このデータベースの更新が毎日朝4時に稼働している事によって,ファイル数の多いシステム等では大量のディスクアクセスが発生してしまう.
- 特にNFS経由の場合はネットワークトラフィックの増加に繋がる事になる.
3.除外ディレクトリを指定する方法
- updatedbの実行オプションを確認する.
- まずはデイリーバッチ処理が設定されるディレクトリへ移動する.
[root@www02 cron.daily]# pwd
/etc/cron.daily
[root@www02 cron.daily]#
|
[root@www02 cron.daily]# ls -la
total 36
drwxr-xr-x 2 root root 4096 Jun 16 18:55 .
drwxr-xr-x 58 root root 8192 Aug 10 11:57 ..
lrwxr-xr-x 1 root root 28 Oct 31 2003 00-logwatch ->
../log.d/scripts/logwatch.pl
-rwxr-xr-x 1 root root 180 Jul 10 2003 logrotate
-rwxr-xr-x 1 root root 418 Aug 28 2003 makewhatis.cron
-rwxr-xr-x 1 root root 1333 Aug 16 2003 prelink
-rwxr-xr-x 1 root root 104 Jan 9 2004 rpm
-rwxr-xr-x 1 root root 132 Jun 16 18:55 slocate.cron
-rwxr-xr-x 1 root root 193 Feb 11 2003 tmpwatch
[root@www02 cron.daily]#
|
- slocate.cronが実行されるシェルなので,中身を確認する.
[root@www02 cron.daily]# cat 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"
[root@www02 cron.daily]#
|
- -eオプションがついているディレクトリが除外対象なので,検索させたくないディレクトリを設定する.
[root@www02 cron.daily]# cat 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,/var/service"
[root@www02 cron.daily]#
|
- ここではreniceが設定されているが,設定できる値は+-20までで,数値が少ないほど高速に実行される.
- つまり,+19という事は,負荷をかけないように実行される事になるが,逆にこれが長時間負荷をかける結果になるかもしれない.
4.実行時間を変更する方法
- 定期バッチ処理を定義しているcrontabファイルを確認する.
[root@www02 root]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts
|
- dailyバッチ処理は朝4時2分に実行される事になっている.
- これを負荷の低い別の時間帯に変更するか,Web,DBサーバとして利用する場合はそんなに重要ではないので,いっその事slocate.cronを実行しない様に設定しても良いと考える.,