是什么原因导致 Apache httpd (+mod_proxy_ajp) 断开连接

是什么原因导致 Apache httpd (+mod_proxy_ajp) 断开连接

我已配置以下 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 查看记分牌,如果记分牌已满,则可以增加工作程序的数量。(应调查增加的工作程序数量是否适合您的环境)

相关内容