新年早々鯖落('A`)
最近落ちなかったから完全に油断していた。
精神衛生上よろしくないので、本気で調べるか・・・。
error_log に出力されているのはこのエラー。
[Mon Jan 01 14:48:07.927459 2018] [mpm_prefork:emerg] [pid 869] (43)Identifier removed: AH00144: couldn't grab the accept mutex
これがプロセスの数(?)分 ドカドカっと出て、httpdが完全沈黙する。
couldn't grab the accept mutex
というキーワードで探してみると
"AcceptMutex fcntl"
を httpd.conf に入れればOKとか書いてあるページを見かけるけど、
これじゃダメだった。
少なくとも俺のhttpd 2.4ではシンタックスエラーになって起動すらできないw
更に深掘りして調べていくと、こんなページを発見。
[emerg] (13)Permission denied: couldn't grab the accept mutex
俺のとこで発生している Identifier removed 以外にも Permission denied 等もあるみたいだ。
これによると
With apache 2.4, use Mutex instead of AcceptMutex
「2.4では AcceptMutex じゃなくて Mutex を使え」とある。
なんのこっちゃと思ったら
Upgrading to 2.4 from 2.2 - Apache HTTP Server Version 2.4
AcceptMutex、SSLMutex、SSLStaplingMutex、WatchdogMutexPath は
2.4では Mutex に統合された と。
というわけで、Mutexはどうやって設定したら良いのかと本家に見に行く。
core - Apache HTTP Server Version 2.4
Mutexの引数は・・・
- default | yes
- none | no
- posixsem
- sysvsem
- sem
- pthread
- fcntl:/path/to/mutex
- flock:/path/to/mutex
- file:/path/to/mutex
が、ある。多いなw
俺の環境では"sysvsem"がデフォルトになっていた。
しかし、これだけあると・・・どれが一番良いんだよw(ノ∀`)
ひとまず最初に出てきた fcntl を httpd.conf の最後に追記してみた。
引数のパスを付け忘れたけど、その場合は /proc に出力しているようだ。
これで直るかどうかはわからないので、しばらく様子見。
あとsysvsemの設定で何故落ちるかを調べなくては。
[]