apache graceful

    • 常識じゃね?と言われそうだけれど。

親プロセスは USR1 あるいは graceful シグナルを受け取ると、子プロセスに現在のリクエストの処理の後に終了する (あるいは何もしていなければすぐに終了する) ように助言します。 親プロセスは設定ファイルを再読込して、ログファイルを開き直します。 子プロセスが徐々になくなるに従って、 新しい世代の設定による子プロセスに置き換えていきます。 そして、これらが新たなリクエストに即座に応答し始めます

http://httpd.apache.org/docs/2.0/ja/stopping.html
// graceful実行
# /usr/sbin/apachectl graceful

// 読み込まれると以下のログが出る
# tail -F /var/log/httpd/error_log
[Wed Oct 27 20:21:36 2010] [notice] Graceful restart requested, doing restart

// reloadの場合は実行中の子プロセスが殺される(親は生きてる)
# cat /etc/init.d/httpd reload
reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
        RETVAL=$?
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}
    • なのでreload よりは graceful が良い。