1

Webアプリケーションに複数のプロセスを使用するとパフォーマンスが向上するかどうか混乱しています。Apacheのmod_wsgiには、デーモンプロセスグループに対して開始するプロセスの数を設定するオプションがあります。以前はlighttpdでfastcgiを使用しましたが、fastcgiアプリケーションごとにプロセスの最大数を構成するオプションもありました。

マルチプロセッシングがどのように優れているかはわかりませんが、シングルプロセスマルチスレッドモデルと比較して、それについて何か悪いことは知っています。たとえば、特にログのローテーションも必要な場合は、マルチプロセッシングシナリオ(リンク)でログを実装するのが難しくなります。また、メモリを共有できないため、メモリに何かをキャッシュすると(最も簡単な方法)、複数の重複コピーがあります。

複数のプロセスがマルチコアコンピューティングパワーをより有効に活用しますか、それともより高いスループットをもたらしますか?それとも、いくつかのシングルスレッドアプリケーションのためだけにありますか?

4

2 に答える 2

4

Python、より具体的にはmod_wsgiで使用されるCPythonの場合、問題はPythonGILです。Pythonには複数のスレッドがある場合がありますが、グローバルインタープリターロックは、事実上、一度に1つのスレッドのみがPythonコードを実行できることを意味します。これは、システム上で複数のプロセッサ/コアを適切に使用できないことを意味します。ただし、複数のプロセスを使用すると、それらすべてのプロセッサ/コアを使用できます。

とは言うものの、mod_wsgiの場合、それはすべてPythonコードではありませんが、多くのCコードがあり、ApacheもCコードです。Cコードの実行中、GILはそのスレッドによってロック解除されます。つまり、Cコードで実行されているスレッドは、Pythonコードで実行されているスレッドと並行して実行できます。それでも、達成できる最善の方法ではありませんが、システム上のすべてのプロセッサ/コアを部分的に使用することはできます。

mod_wsgiに関連するこの詳細については、以下をお読みください。

http://blog.dscpl.com.au/2007/09/parallel-python-discussion-and-modwsgi.html http://blog.dscpl.com.au/2007/07/web-hosting-landscape-and -modwsgi.html

于 2011-08-10T00:17:22.790 に答える
3

マルチプロセッシングはマルチスレッドよりも効率的ではありませんが、障害に対してより回復力があります。各プロセスは独自の独立したメモリスペースを取得し、他のプロセスとは独立して終了および再起動(リサイクル)できます。

于 2011-08-09T15:06:34.773 に答える