1

WSGIDaemonProcess設定でmod_wsgiを使用するときに、Apacheで特定の数のプロセスを生成するにはどうすればよいですか?

私はVirtualHostを次のように設定しています(テストとして):

WSGIDaemonProcess webserver user=webserver group=webserver processes=24 threads=8 display-name=%{GROUP} python-path=/var/virtualenv/lib/python2.6/site-packages

私のhttpd.confが次のように設定されている間:

<IfModule prefork.c>
StartServers       8
MinSpareServers    1
MaxSpareServers    8
ServerLimit       24
MaxClients        24
MaxRequestsPerChild  4000
</IfModule>

PostgreSQLデータベースもインストールされた非常に制約のある256MBサーバーを実行していることに注意してください。

ただし、システムはapacheに対して24をはるかに超えるプロセス(30を超える)を示しています。ServerLimitをWSGIDaemonProcessのプロセスと同じに設定すると、定数24で実行されると予想しました。しかし、不明な理由で実行されているスペアプロセスがたくさんあるようです。

4

1 に答える 1

4

ServerLimitディレクティブは、mod_wsgiデーモンモードとは何の関係もありません。WSGIDaemonProcessの「processes」オプションは、mod_wsgiが作成するデーモンプロセスの数を指定するものです。これは静的な数値であり、動的な数値ではないため、必要な数に設定するだけです。プロセスあたりのスレッド数については、mod_wsgiデーモンプロセスにリクエストをプロキシするApache子ワーカープロセスでの同時リクエストが24に制限されているため、最初に「processes=3」を超えるように設定しても意味がありません。それ以上のリクエストを処理することが可能です。

一般に、メモリに制約のある環境で実行している場合は、プリフォークMPMではなくワーカーMPMを使用する必要があります。PHPコードも実行する必要があるなど、必要な理由はありますか?そうでない場合は、使用するMPMを変更します。

他にどのように設定できるかは、コード、応答時間、および要求スループットによって異なりますが、これはあなただけが知っています。

于 2012-04-24T01:35:27.823 に答える