我已配置以下 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>
server.xml
我的 Tomcat 版本(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>
更新: 请求server-status?auto
收益下列在负载测试阶段,当请求被丢弃时 - 所以在我看来,有足够的工人等来节省
答案1
如果收到太多请求,Apache Web 服务器将开始断开连接。您可以使用 mod_status 查看记分牌,如果记分牌已满,则可以增加工作程序的数量。(应调查增加的工作程序数量是否适合您的环境)