ファイル数が無尽蔵に増え続けそうな Linux サーバでは updatedb を無効にしておいたほうが良さげ

何気に Unix 系のネタは初めてです。お手柔らかに!

弊社では社内サーバのストレージを pdumpfs を使ってバックアップ専用のサーバに毎日バックアップを取得しているのですが、バックアップサーバのパフォーマンスが著しく劣化 (iowait が常時 50%) しているので調査してみました。

本当は調査の過程を詳細に書ければよかったのですが、とりあえず当てずっぽうに (top コマンドで updatedb がちらついていたのが気になったので) updatedb の仕業じゃないかなーと思って止めてみたらビンゴ。以下のように改善しました。

CPU 使用率 (年単位)

Week 41 の中盤頃に updatedb を停止したところ一気に負荷が下がりました。

CPU 使用率 (年単位)

年単位で見るといい感じに特徴的なカーブを描いています。

ちなみに updatedb は locate コマンド用にインデックスを作成する処理のようです。locate コマンドは使わないし find コマンドで代用できるのでオフにしても問題ないという判断で今回はオフにしてみました。

updatedb は cron によって起動されているので、cron のスクリプト (弊社の使っている CentOS 5 では /etc/cron.daily/mlocate.cron) をコメントアウトして停止しています。

#!/bin/sh
#nodevs=$(< /proc/filesystems awk '$1 == "nodev" { print $2 }') #renice +19 -p $$ >/dev/null 2>&1
#/usr/bin/updatedb -f "$nodevs"

というわけで今回は、ファイル数が無尽蔵に増え続けるようなサーバでは updatedb を停止したほうがよいかもというお話でした。それではまた!

preload preload preload