apacheのメモリリーク対応

先日、OpenIDでのサービスを提供するため、ガイドミーサーバのPHPバージョンアップを行った。

phpのバージョンを5.2.4にして、apacheは従来通りでモジュール入れ替え後、restartしたのだが、以前よりもhttpdのメモリサイズが大きく、それが時間と共に肥大化し、swapを食い尽くすような状況に陥ってしまった。

phpはアクセラレータとして eacceleratorを使用しているのだが、エラーログなどにエラー出力なども無く、仕方なくhttpd.confに手を加えることにした。

通常apacheはプロセスとしてある一定期間存在し、その後消滅するのだが、この消滅期間を規定するのが、

MaxRequestsPerChild

というパラメータである。バージョンアップ前はこれを0(=無制限)としていたたため、メモリリークがどこかで発生してもプロセスが存在し続けてしまい、swapまで食い尽くす原因となっていた。この値を200 にしたところ、CPUパフォーマンス、メモリ使用量的にも問題無いレベルに収まった。

カテゴリー: ガイドミーについて, 技術関連 パーマリンク