CentOSに基づいてAmazon AMIを実行している1.7 GBのメモリを備えた私の小さなec2インスタンスは、Apacheがメモリを必要以上に利用しているという問題があります。スクリーンショットを見ると、httpdサービスを再起動するまでメモリ使用量は90-100%になり、そこでサービスが最初から始まり、90%以上に戻ります。
問題を特定する方法について支援をいただければ幸いです。使用可能なすべてのメモリを利用するための、これはおそらく「通常の」Apache動作ですか?または私が追い詰めなければならない可能性のある漏れがありますか?現時点で私は何が起こっているのかについて少し困惑しています。
私たちはApache MPMプリフォークを使用しており、SQLやそれに類するものは使用していません。Apacheのみです。ウェブサイトは here です。
HTTP500が言ったように、マシンが実際に窒息しない限り、おそらくそれについて心配するべきではありません。 Help!Linux Ate My RAM! をご覧ください。バッファではなくRAMを使用するプロセスがあるため、これはかなり類似した状況ではありませんが、それほど遠くないわけではありません。マシンの物理RAMは、カーネルバッファまたはスペアApacheで使用されるリソースですワーカープロセスが着信要求を迅速に処理します。 RAMを使用していない場合は、ボックスのサイズに対して過大な支払いがありました。
とにかく、MPM設定で遊んでみたい場合、Apacheのドキュメントは http://httpd.Apache.org/docs/current/mod/prefork.html です。
サイトのトラフィックが少ないと述べたように、MinSpareServers、StartServersなどを減らすことができます。そうすると、カーネルバッファが悪意のある目的のために消費する空きRAMが増えます。
すべてのメモリを使用するlinuxは正常で、使用されていないメモリはディスクキャッシュとして再利用されます。参照: linux ate my ram
これは、free -m
の出力を確認することで確認でき、次のようなものが表示されます。
total used free shared buffers cached
Mem: 7889 6887 101 0 106 2307
-/+ buffers/cache: 5373 3416
Swap: 1903 17 1886
+/- buffers/cache行が必要な行です。キャッシュされたRAMを無料で追加して、実際に利用可能なメモリ量をよりよく把握できるようにします。この場合、101ではなく3416の数値に注目したいとします。