web-dev-qa-db-ja.com

Apacheの高負荷VIRTとRESメモリ

私は大量のトラフィックを取得するDebian 5サーバーを使用しています。現在、サーバーには4 GBのRAMとスワップメモリ​​がありません。Apacheプロセスがそれぞれ約180 MBの仮想メモリ(VIRT)を消費し、16 MBの実際のメモリがRAM(RES)では、同時にいくつのApacheスレッドを実行できますか?約4 GB/180 MB = 22または4 GB/16 MB = 256?

8
pako

仮想メモリのサイズは、常駐セットほど重要ではありません。仮想メモリには、共有ライブラリやマッピングされていないもの(物理的なRAMに1回だけ常駐します)などが含まれます。RSSは、実際にメモリにあるものをVirtとして通知します。使用可能な仮想アドレス空間がどれだけ飲み込まれたかを示します。

2番目の計算はかなり低くなりますが、かなり低くなります。 4GBのRAM=のサーバーは256を超えるApacheプロセスを実行できます。トラフィックパターンとIO待機制限によっては、256を超える実行はこれらのプロセスの多くは、カーネルがデバイス間でデータをシャベルでシャベルするのを待っているだけなので、良い考えです。COWや、すべてが同じ「httpd」バイナリを指しているという事実を考慮に入れると、効率。

次に、2GBの十分なスワップ領域を使用して、そのシステムを再構築します。スワップはもはや「遅いメモリ」として機能するだけではありません。

免責事項として、Linuxのメモリ管理の詳細に注意を払ってから久しぶりになり、私の事実から少しずれているかもしれませんが、要点はしっかりしています!

10
McJeff

この値は主に、現在のサーバーの負荷を試すためのものです。

「Apache top」でデータを収集してみてください。構成を変更して、再試行してください。私はあなたが特定のユースケースを知らないので、いくつかの具体的な数字を思いつくのは難しいです。

Webサーバーで予測可能のメモリ消費量が必要な場合は、 http://wiki.nginx.org/Main を参照してください。 =

それは非常にクールな方法でいくつかのスケーラビリティの問題を解決します。

すべてのユースケースに適しているわけではありませんが、必ず検討してください。

これをデプロイして、Apacheインスタンスの負荷を軽減できます。静的コンテンツとキャッシュコンテンツをリバースプロキシ構成で提供するほか、他の高負荷シナリオに適しています。

それを試してみてください、それは無料です:-)

1