このエントリーをはてなブックマークに追加

Apache がセマフォを使いきる

Apache の負荷が高いときに Apache を service httpd restart として再起動すると、まれに次のようなエラーメッセージを表示して Apache を再起動できないときがある。

[Mon Feb 09 17:54:50 2009] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
Configuration Failed

えっ、ハードディスクの空き容量がなくなったと勘違いしそうなエラーメッセージだけれど、これは Apache がセマフォを使いきっているために起こる現象。サーバを再起動すればすぐになおすことができるが、そうそうサーバを再起動できないので、次のコマンドで Apache ユーザが使用しているリソース一覧を表示して確認する。

$  sudo ipcs -s | grep apache

0x00000000 7831552    apache    600        1

(略)

Apache が起動していないのに、Apache ユーザが使用しているリソースがあるのはおかしいので、次のコマンドでリソースを解放する。

$ sudo ipcs -s | grep apache | awk ‘{print “sudo ipcrm -s “,$2}’  | sh

これで、ちゃんと Apache を起動することができる。