多くの運用者を悩ませている問題の一つに、Apache が次のログを吐いて動作不良になる問題がある。
Parent: child process exited with status 3221225477 — Restarting.
これが出ると、得体の知れない症状になり、Webアプリケーションが動いているような動いていないような感じになったり、ロードバランサーが、Gatewayタイムアウトを起こしたりするようだ。
悪名高い問題と表現されている場合もあり、本当に厄介な問題です。
Webアプリケーション側の問題にも見えるし、PHPなどの処理系の問題だと考える人もいるし、対策にしても、Apacheを定期的に再起動するようになったら出なくなったとか、何らかのパラメータを変えたら出なくなったとか、それでもしばらくしたらまた出たとか、頻度が上がったとか下がったとか。
うちの会社でも、以前から不可思議な現象が時々発生していて、調査を継続していますが、発生タイミングに傾向が無く、問題が発生したときに、Apacheを再起動すると解決してしまうため、問題の再現ができませんでした。
が、本日の調査で、解決の可能性が見つかりましたので、情報としてシェアしておきます。
が、その解決策ですが、特に Windows 上で Apache を動かしている場合、Apacheのデフォルトのスタックサイズが小さすぎて、メモリ問題を引き起こすので、ThreadStackSizeの指定サイズを大きくするようにと書いてあります。
なるほど、メモリ問題だとすれば、一連の症状やタイミングは説明可能です。
そもそも、発生タイミングがランダムで、確実に発生させることができないので、これで問題解決とは言えませんが、とりあえずこの設定を行って様子を見ることといたしました。