Apache httpd 2.2、mod_php、およびAPCがインストールされている私のサーバー(Debian 6.0)にメモリの問題があります。
実際、httpdはMongodbの応答を待っている間(30秒のタイムアウト)、使用可能なすべてのメモリ(4GB)を割り当てるようです。わかりました。 30秒の制限時間は長すぎます。この時間がかかると、フロントエンドサーバーはメモリの交換を開始し、ハードウェアが完全に停止するまで負荷平均が非常に高い値(約200)に達します。
MaxClients
現在、httpd設定が200に設定されており、PHPメモリ制限が128 MBなので問題があるようです。最悪の場合、PHPエンジンあたり少なくとも25GBのRAMしか必要ありませんが、4GBがあります。
- 128MB * 200 = 25MB
私の控えめな意見:4GBでphp memory_limitを96MBに減らすと、約48個のフォーク(MaxClients
48など)をサポートする必要があります。 Apache httpdが新しい子プロセスをフォークしても、ほとんどのメモリは親プロセスと共有されます。
- 合計メモリ 4GB = Apache サブ 96MB*48
MaxClients
しかし、すべてのhttpdサブプロセスが共有するメモリの量と、各Apache httpdプロセスが割り当てるメモリの量を正確に知る方法は何ですか?
そして、PHPとAPCについて話しているので、この場合でも、各エンジンがどのくらいのメモリを共有し、どのくらいのメモリが割り当てられているかをどうやって知ることができますか?