Apacheが動かなくなった

土曜日の早朝にウェブサーバのhttpd(apache)がクラッシュ。zabbixの監視スクリプトで自動的に再起動がトライされたが、失敗していた模様。
リモートでログインして手動でapachectlを叩いても同じ結果。
LogLevelを上げて、ログをチェック。こんなログがでていました。

[Mon Oct 29 09:34:18.622549 2012] [proxy_balancer:debug] [pid 4607:tid 1] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 736, 1 (6)
[Mon Oct 29 09:34:18.622904 2012] [proxy_balancer:debug] [pid 4607:tid 1] mod_proxy_balancer.c(815): AH01184: Doing workers create: balancer://ssl_cluster (s7719a0d4_ssl_cluster), 576, 2
[Mon Oct 29 09:34:18.632887 2012] [proxy_balancer:emerg] [pid 4607:tid 1] (17)File exists: AH01179: balancer slotmem_create failed
[Mon Oct 29 09:34:18.632987 2012] [:emerg] [pid 4607:tid 1] AH00020: Configuration Failed, exiting

mod_proxyでバランサを使うと、logs/以下へなにやらファイルをつくってそれでコントロールするようですが、そのファイルが作れないといっているみたい。
ファイルがあるから上書きできないと。うーん、そんなファイルないけどな。
とりあえず以下の手順で復旧。

  • apacheを停止
  • 怪しいァイルを削除

# cd $APACHE_DIR/logs
# rm -fr slotmem*

確かに停止した段階でサイズ0のslotmemで始まるファイルがありました。こいつを削除すると起動できるように。
通常の手段でapacheを停止した場合は、こららのファイルを始末してから停止するのですが、クラッシュなど異常終了した場合はファイルがのこってこんなエラーで再起動できないケースがあるようです。

zabbixでの起動スクリプトへファイルを掃除する行を追加しました。