Apacheの高負荷VIRTとRESメモリ


8

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

回答:


10

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

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

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

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


なぜ256以上のApacheプロセスを実行できるのですか?8Gbで実行できるアプリケーションは8つだけです。
gcb

-1。「4GBのRAMを搭載したサーバーは256プロセスをはるかに超えるApacheプロセスを実行できます」プロセスごとに16MBを使用すると、スワッピングが発生します。これは、このテーマに関するすべてのパフォーマンスガイドによると、重大な罪です。
2014年

合計で16GbのRAMが利用可能なシステムで4 GBのJVMヒープ(スレッド数は無制限)を実行freeし、メモリ全体がいっぱいであると報告するとどうなりますか?0または数百MBの空きメモリ?jvm「コンテナ」の使用済み/空きメモリの適切な比率はどれくらいですか?
niken

1

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

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

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

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

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

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

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

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