2008/01/15(火)Apache 2.2/worker で ServerLimit が効かない?
PerlInterpMaxを解析後、正しくApacheに ServerLimitを設定しているにも関わらず、またデータベース接続エラーが。ps ax すると、httpd(Apache)のプロセスが9個ぐらい起動してました(汗*1
あれバグ? それとも仕様??
検索してみても、同様の報告しかみつかりませんでした*2。調べてみると
MaxRequestsPerChild 1000
を越えたときに、古いプロセスがうまく殺せていないようです。mod_perl が影響しているかどうかは不明です。とりあえず、MaxRequestsPerChild 0 にして様子をみようと思います。
推測
MySQL環境で同様の設定もしても再現しないことから、おそらく PostgreSQL で Connection を永続させているため、ネットワークコネクションがすべて切れない(Apacheがコネクション=クライアント接続中)と勘違いしてプロセスが Kill されないせいと思われます。*3
PostgreSQL への接続に UNIX ドメインソケットを使っているせいでタイムアウトの設定ができない(汗