次のVirtualHostを構成しています(Apache 2.2.22)
<VirtualHost *:80>
ServerName ************
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorLog /var/log/Apache2/dalo-lt_error_log
LogLevel warn
TransferLog /var/log/Apache2/dalo-lt_access_log
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
私のTomcatのserver.xml
(7.0.39)には次のようなものがあります。
<Connector port="8009" protocol="AJP/1.3"
redirectPort="8443"
connectionTimeout="60000"
maxConnections="36864"
maxThreads="600" />
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxConnections="36864"
maxThreads="600"
redirectPort="8443" />
Vhost:80 + ajpを介してストレステストを実行すると、特定の時点以降に接続が切断されたことがわかります。ただし、Tomcatのhttpコネクタ(:8080)を介して直接テストを実行すると、接続の切断はまったく見られません。
これを引き起こしている原因を特定するための最良の方法は何ですか?
完全を期すために、ここに私のApache2.conf
からのいくつかの設定があります
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 20
MaxClients 500
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 4
MinSpareThreads 50
MaxSpareThreads 450
ThreadLimit 256
ThreadsPerChild 150
MaxClients 300
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 4
MinSpareThreads 50
MaxSpareThreads 450
ThreadLimit 256
ThreadsPerChild 150
MaxClients 300
MaxRequestsPerChild 0
</IfModule>
Update:server-status?auto
を要求すると、 以下 が発生しますが、負荷テストのフェーズ中に要求がドロップされます-だから、余裕のある労働者などがいるように見えます
Apache Webサーバーは、要求が多すぎると接続の切断を開始します。スコアボードを確認するためにmod_statusを使用できます。スコアボードがいっぱいの場合は、ワーカーの数を増やすことができます。 (増加した労働者があなたの環境に合っているかどうかを調査する必要があります)