サーバーのすべてのメモリを利用するApache "httpd"プロセス


9

CentOSに基づいてAmazon AMIを実行している1.7 GBのメモリを備えた私の小さなec2インスタンスは、Apacheがメモリを必要以上に利用しているという問題があります。スクリーンショットを見ると、httpdサービスを再起動するまでメモリ使用量は90-100%になり、サービスが最初から再開され、90%以上に戻ります。

ここに画像の説明を入力してください

問題を特定する方法について支援をいただければ幸いです。利用可能なすべてのメモリを利用するために、これはおそらく「通常の」Apache動作ですか?または私が追い詰めなければならない可能性のある漏れがありますか?現時点で私は何が起こっているのかについて少し困惑しています。

私たちはApache MPMプリフォークを使用しており、SQLやそれに類するものは使用していません。ただapacheです。ウェブサイトはこちら


1
スワップを使用していないように見えるので、問題は何ですか?
HTTP500、

大量のメモリの使用が問題になるのではないでしょうか。私の初心者の経験を失って、私はそれが間違った仮定かもしれないと思います。多分それは正常な動作であり、Apacheはトラフィックの少ないWebサイトであるにもかかわらず、取得できるすべてのメモリを使用するように設計されていますか?
アミビット

1
私はあなたがNewRelicを使用していることに気付きました。これは、httpd confにこの行を追加した場合、Apacheで費やされた時間も記録できる場合があります(役立つ場合があります)RequestHeader set X-Request-Start "%t"。App Server> Overviewに移動すると、これは「Request Queuing」として表示され、問題の原因を突き止めるのに役立つ場合があります。
和基。

回答:


8

HTTP500が言ったように、マシンが実際に窒息しない限り、おそらくそれについて心配するべきではありません。ヘルプを見てくださいLinux Ate My RAM!。バッファではなくRAMを使用するプロセスがあるため、これはかなり類似した状況ではありませんが、それほど遠くないわけではありません。マシンの物理RAMは、カーネルバッファまたは予備のApacheワーカープロセスで使用されるリソースであり、着信を迅速に処理します。リクエスト。RAMを使用していない場合は、ボックスのサイズに対して過大な支払いがありました。

とにかく、MPM設定で遊んでみたい場合は、Apacheのドキュメントはhttp://httpd.apache.org/docs/current/mod/prefork.htmlです。

サイトのトラフィックが少ないと述べたように、MinSpareServers、StartServersなどを減らすことができます。そうすると、カーネルバッファーが悪意のある目的のために消費する空きRAMが増えます。


4

すべてのメモリを使用するLinuxは正常です。使用されていないメモリは、ディスクキャッシュとして再利用されます。参照:Linuxは私の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の数値に注目したいとします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.