2010年6月28日月曜日

apacheで「child pid xxxx exit signal File size limit exceeded (25)」エラーがでる

どうも、俺@仕事中です。

昨日とあるWEBサーバでページが表示されない事件が発生しました。
色々調べていると、apacheのerror_logに題名の
[notice] child pid 11737 exit signal File size limit exceeded (25)
のエラーが大量に、、、。

何のこっちゃ!?でしたが、とりあえず何かのファイルサイズがでかすぎる!という意味みたい。
ログファイルを見ていると、phpのエラーログが
$ ls -l php_error_log
-rw-r--r-- 1 nobody root 2147483647 Jun 21 10:30 php_error_log
で止まっている。
中身がとあるNOTICEレベルのエラーがずらーり。
というわけで
# mv php_error_log php_error_log.0 && touch php_error_log && chown nobody php_error_log
してapacheを再起動したら正常に稼働しはじめました。

Linuxには2GBの制限問題というものがある、と初めて知りました。
参考:Linuxで2GBを超えるファイルを作れない::0と1の欠片


まぁ、単純にファイルを削除するとかファイル名を変えるとかで対応できますが、32BitのLinuxOSだと問題ありそうです。
apacheのコンパイル時に
# CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" ./configure --prefix=/usr/local/apache2
とかやれば2GBの問題はなくなるそうです。
参考:httpdで2GBを超えるファイルのリクエストに対応する方法::サラダ(*)

以上でぇぇぇえす。

0 件のコメント: