1

Apache 2.0/2.2/2.4 で何百もの CGI プログラム (perl または他の言語) を同時に実行しようとしています。私のテスト環境は、1 GB の RAM を搭載した Windows Server 2003 R2 です。

プログラムでは、無限ループまたは「$_ = < STDIN >」を使用して、各プロセスを存続させます。Apache 構成では、ThreadPerChild などの十分な大きさのすべての相対構成を 1000 に設定します。次に、JMeter を使用して 200 の要求をテストします。コンソール アプリケーションで Apache を実行すると、正常に動作し、200 個の cgi プロセスがすべて実行されています。ただし、Apache を Windows サービスとして実行すると、60 ~ 100 のプロセスしか同時に実行されません。実行中のプロセスを強制終了しない限り、他のプロセスは開始されません。何が原因なのかわからない。cgi プログラムの実行中に Apache サービスの接続/メモリ制限はありますか? ありがとう!

4

1 に答える 1

2

MaxClientsファイルのパラメータはhttpd.conf、Apacheサーバーの接続の最大制限を設定します。デフォルトの接続制限は256です。

ファイルを開いhttpd.confてMaxClientsを検索すると、サーバーで確認できます。

Linuxでのhttpd.confのデフォルトの場所はです/etc/httpd/conf/httpd.conf

Windowsでは、confファイルのデフォルトの場所はC:/Program Files/Apache Group/Apache/conf/httpd.conf

こんな感じです。

# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

必要な値に値を設定MaxClientsしてから、サーバーを再起動して変更を適用できます。

于 2012-07-10T20:05:22.333 に答える