Mind of J

電脳硬化症気味な日記です。まとまった情報は wiki にあります。

2010.2.1 (Monday)

at 21:44  

MaxRequestsPerChildに達して子プロセスが再起動すると、アクセスログファイルの更新時刻が更新されなくなる不具合   [ICTメモ]

 当サイトを構成する 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再起動/日 だな。。。


« MySQL 5.0.90
Redmine 0.9.1 »
  trackback:    



Go back.