当サイトを構成する Apache 2.2 on Windows XPですが、「MaxRequestsPerChildに達して、子プロセスが再起動すると、アクセスログファイルの更新時刻が更新されなくなる」という現象が出ています。当サイトにおいては、アクセスログの更新時刻が正しくなくなると、集計ソフト(AwStats)へログを渡すスクリプトが誤動作しちゃいます。
ってことで、思い切って、MaxRequestsPerChild設定をコメントアウトしちゃうことにしました。きゃぁ~、これでメモリ消費はリーク分だけ単調増加 (^^;; 大丈夫かしら? ダメだったら毎夜再起動だな。。。
ついでに、何の気に無しに Win32DisableAcceptEx もコメントアウトしてみたのですが、「winnt_accept: Asynchronous AcceptEx failed」という警告ログが出なくなりましたね。あれ? 問題ないじゃん!
[追記] いやいや、やっぱりエラーはでます。2時間に2回程度。「(OS 64)指定されたネットワーク名は利用できません。 : winnt_accept: Asynchronous AcceptEx failed.」とか「(OS 121)セマフォがタイムアウトしました。 : winnt_accept: Asynchronous AcceptEx failed.」とか。
やっぱり、まとめると、こうか。。。
(1) Win32DisableAcceptExを書かないと、2時間毎ぐらいに[warn]がでまくる。
(2) (1)対応のため、Win32DisableAcceptExを書くと、メモリリークが発生。httpd.exeの消費メモリが時間経過につれ肥大化する。
(3) (2)対応のため、MaxRequestsPerChildを設定すると、上限に達し、子プロセスの移譲が発生する際に、アクセスログの更新時刻が更新されなくなる。
(3)をやめて、Apache再起動/日 だな。。。