9

静的メディア ファイルを提供し、mod_wsgi を実行している Apache 2.2 prefork MPM サーバーに Django 要求を渡す Nginx フロント エンドを備えた小さな VPS サーバーがあります。

1 つの (非常に) 小さいサイトが読み込まれて動作しているため、現在 256 MB の RAM のうち 143 MB を使用しています。

このtopコマンドを使用すると、Apache が使用可能な RAM の 52.9% を使用しており、memcache が 2.1% を使用していることがわかります。

この 1 台のサーバーにかなりの数の Django プロジェクトを配置することを計画していることを考えると、Apache が使用している RAM の量を削減するために何かできることはないかと考えています。

4

4 に答える 4

8

Apacheを使い続けたい場合は、いくつかの提案を、おおまかに難易度の高い順に示します。

  • preforkの代わりにApacheワーカーMPMを使用します。クライアント接続ごとに使用される実メモリは少なくなりますが、Linuxが各スレッドのスタックに8MBを割り当てるため、Linux上のApacheに割り当てられた仮想メモリが非常に高く見える可能性があることに注意してください。VPSが脳死していて、実際のRSS(常駐セットサイズ)メモリではなく仮想メモリを制限していない限り、これは実際には問題ではありません。その場合、ここでスレッドスタックサイズを小さくする方法を学ぶことができます(メモリに制約のあるVPSセクションの下)。
  • Apache構成ファイルを編集し、StartServers、MaxClients、MinSpareThreads、およびMaxSpareThreadsの設定をほぼ比例して減らします。適切なレベルは、必要なメモリ使用量と、サービスを提供できる必要がある同時クライアントの数との間のバランスになります。
  • mod_pythonではなくmod_wsgi(デーモンモード)に切り替えます。
于 2009-01-29T20:00:59.800 に答える
6

記録として、OPがMPMという用語を使用することは無意味です。ApacheのMPMはオプションではありません。Apacheを使用するときは、常にMPMを使用しています。選択は、使用しているMPMです。UNIXでは、2つの主要なMPMまたはマルチプロセッシングモジュールは、プリフォークとワーカーです。Windowsでは、winntMPMが常に使用されます。さまざまなMPMの詳細については、ApacheWebサイトのApacheドキュメントを参照してください。ただし、mod_wsgiのコンテキストでは、次の内容を読んだ方がよい場合があります。

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

要するに:

  • preforkMPMはマルチプロセス/シングルスレッドです。
  • ワーカーMPMはマルチプロセス/マルチスレッドです。
  • シングルプロセス/マルチスレッドのWindowsMPM。
于 2009-06-24T12:13:57.013 に答える
2

FastCGI で Django を実行できます。nginx は、Apache を経由する代わりに直接それを駆動できます。

于 2009-01-28T19:07:46.713 に答える