daemontoolsによるmemcachedの起動監視設定

memcachedのプロセスがたまに落ちるので、それは原因を追求しなきゃいけないんですが、
その場しのぎ的になんとかしなきゃいけない時にやったプロセスを監視して落ちたら自動で起動するようにdaemontoolを設定した時のメモです。

OS CentOS 5.6 64bit
http://www.qmailtoaster.com/download/stable/daemontools-toaster-0.76-1.3.6.src.rpm

ここでSRPMが公開されているのでのでありがたくRPM化してインストールしておきます。


daemontoolsをインストール後、

daemontool用ディレクトリ作成
mkdir /var/memcached


起動スクリプト作成
/var/memcached/run


ファイル内容は↓です。
memcached自動起動時、メール通知が行われるようになっています。

#!/bin/sh

if [ -f /etc/sysconfig/memcached ];then
        . /etc/sysconfig/memcached

SUBJECT="`hostname` memcached restarted."

/bin/mail -s "$SUBJECT" root@example.com <<END
memcached restarted.
`date '+%Y-%m-%d %H:%M:%S'`
END

fi

exec 2>&1
exec /usr/bin/memcached -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN
$OPTIONS


起動スクリプトへ実行権を付与
chmod +x /var/memcached/run


起動スクリプトのシンボリックリンクを張る
ln -s /var/memcached /service/memcached


memcachedデーモンの停止

既にmemcachedデーモンが動いている場合は停止しておきます。

/etc/init.d/memcached stop


daemontools起動
sh -c 'svscan /service &'

これでdaemontoolsからmemcachedが起動されます。


memcachedのプロセスの起動状況は以下で確認できます。

svstat /service/memcached


daemontoolsからmemcachedを起動させている為、
memcachedプロセスの再起動や停止は以下のコマンドを使って行います。

memcachedを再起動する場合
svc -t /service/memcached


memcachedを停止する場合
svc -d /service/memcached


memcachedを起動する場合
svc -u /service/memcached