web-dev-qa-db-ja.com

uWSGIプロセスの数は正しいですか?

シナリオがより良いセットアップになる4コアボックスの場合:

リクエストを処理するための深いキューを持つ4つのuWSGIプロセス

深いキューを持つ8つのuWSGIプロセス

比較的浅いキューでサーバーのメモリが許す限り多くのプロセス?

3
Jason Christa

歴史的に一般通念は、Webサーバーのパフォーマンス(つまり、トランザクションごとのライフタイムが比較的短い高揮発性のワークロード)は、コアの数よりも使用可能なメモリの関数であるというものでした。 OSプロセススケジューラは、利用可能なプロセッサの中で最もCPUを集中的に使用するプロセスをラウンドロビンするよりもかなり深い魔法を使用します。スケジューラーを2番目に推測しようとするのではなく、予想される同時要求の負荷よりも多くの浅いキュープロセスを存続させるのに十分なRAMを確保し、スケジューラーは、それらをタイムリーにサイクルさせる方法を処理します。

3
Jeff Albert

答えは、サービスを提供しているアプリケーション、特にランタイムによって異なるということです。

PythonまたはRubyを使用している場合、アプリケーションで使用できるネイティブコードを多数使用しない限り、論理コアごとに1つのプロセスが必要になる可能性があります。複数のコアを使用します。

Goまたは複数のコアで同時にコードを実行できる別の言語を使用している場合は、1つのプロセスのみが必要です。

深いキューと浅いキュー(ソケットリッスンキューの長さ)のどちらが必要かについては、少なくともプロセス数xスレッド数と同じ長さで、uWSGIの前にあるものに応じて長くする必要があります。

1
malthe