wombleの答えは素晴らしかったが、未経験者を理解して応募するのは少し難しい。いくつかの経験的な数値、および「シンプルコンテンツ」と「eコマース」アプリケーションの比較を示したいと思います。
mod_wsgiの適切な構成に関連して、さまざまなユースケースを設定することについてはあまり資料がないので、ここで少し散文を使用してもかまいません。
A)CMSサイトとマイクロサイト
私たちはいくつかの顧客のウェブサイトを運営しています。それらのほとんどは、主にコンテンツサイトまたはdjango CMSをホストするマイクロサイト、いくつかのカスタムフォーム、およびスケジュールされたバックグラウンドタスク用のCeleryです。これらのサイトはリソースを必要とせず、それらのいくつかは32 GB RAMを搭載した単一の4コアIntel Xeon上で並行して問題なく実行されます。この種類の各サイトに使用する構成は次のとおりです。
WSGIDaemonProcess example.com user=www-data processes=2 maximum-requests=100
1台のサーバーに約40のサイトがあり、そのほとんどがステージングサイトがスタンバイで実行されています。2つのプロセス(デフォルトではそれぞれ15スレッド)を使用すると、サーバーリソースを割り当てる機能が制限されますが、サイトは十分に機能します。このセットアップが十分な理由は、(CMS)アプリケーションの単純な性質で正当化できます。要求が完了するまでに数ミリ秒以上かかるとは考えられません。Apacheは常にリラックスしたままであり、CPU負荷も同様です。
B)eコマースサイト
私たちが行うより複雑なサイトの特徴は、依然として計算コストが低いローカル操作ですが、トランザクション時間の点で高価な外部依存関係(予約データを提供するWebサービスなど)です。外部リクエストを使用した操作は、はるかに長い時間スレッドを占有するため、同じ数のユーザーに対応するためにより多くのスレッドが必要です(上記の単純なCMSサイトと比較して)。さらに悪いことに、外部サービスがすぐに要求に応答できない場合、時には数秒間、スレッドがブロックされることがあります。これにより、使用可能なmod_wsgiスレッドがすべて使い果たされ、待機がブロックされるまで、スレッドが同じサービスキューにリクエストを配置するという不快な副作用が発生する可能性があります。
これらのシナリオでは6
、多くの違いを見ることなくプロセスを使用しようとし12
ましたが、パフォーマンスと動作の安定性の比類なき向上が見られました。
WSGIDaemonProcess example.com user=www-data processes=12 maximum-requests=100
150人および250人の並列ユーザーを使用した簡単な負荷テストは、サイトの応答性を維持することで簡単に処理できます(一方、2
プロセスでは、50ユーザーを並列処理するサイトは使用できません)。32 GB RAMを搭載した2 CPU 6コアIntel Xeonは、その負荷の下で25%未満のCPU使用率で実行され、RAM使用率もほぼ一定で25%未満に留まります。ここでは単一のサイト専用のマシンを使用しているため、他のサイトが必要とするリソースを盗むことはありません。
結論
より多くのプロセスを使用することは、Apacheが利用可能なシステムリソースを利用できるようにするかどうかのトレードオフです。「攻撃」状態で安定したサーバーシステム(Webサイトではありません!)を維持する場合は、数値を低くします。必要なときにシステムリソース(CPU、RAM)を使用してApacheを支援したい場合は、より大きな数を選択します。どれだけ高くすることができるかは、上記の受け入れられた答えで概説されているように計算され、最終的に利用可能なCPUパワーとRAMによって制約されます。
(PS:modwsgiプロジェクトwiki のConfigurationDirectivesセクションは、Apacheのようなバックグラウンドで読むために枕の下に置いておきます。また、Apacheサーバーの開いている接続を理解して監視してください。