UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

updatedbの負荷を削減する

updatedbの負荷を削減する


0.改訂履歴

  • 2005.08.05 新規作成

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を実行しない様に設定しても良いと考える.,


広告スペース
Google