首页 > 解决方案 > 某些请求的 Apache https 请求状态挂起,返回 502 状态

问题描述

我已经在 EC2 和 tomcat 上部署了服务器。我从 goDaddy 购买了域名。我正在使用带有 mod_ssl 的 HTTPD 进行 URL 重定向。当我尝试访问我的服务器时,某些请求处于挂起状态,但是当我刷新浏览器或重新提交请求时,数据会被加载。

我观察到只有一些请求失败,无论我使用的是 preworker 还是 worker。我已经监视了 tomcat 到 apache 请求日志,但是 apache 请求没有针对这些请求重定向到 tomcat。

这现在阻止了我的生产流量,因为用户无法顺利访问此应用程序。

我试图通过 IP 访问该应用程序,但我没有遇到 502 的问题,但是当我在 https 上使用 DNS 使用它时,它会阻止一些请求并给出 502。

当前部署的服务- 1. Tomcat 2. Solr 3. Mysql 4. Apache

系统配置

系统上的活跃用户 - 100+

为了

APACHE 配置 /etc/httpd/conf/httpd.conf

<IfModule mpm_worker_module>
KeepAlive on
StartServers 5
MinSpareThreads          15
MaxSpareThreads         100
ServerLimit 10
MaxRequestWorkers 200
MaxRequestsPerChild 4000

</IfModule>

/ssl.conf

<Proxy *>
    Order deny,allow
        Allow from all
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass /mdt http://13.2XX.XXX.XX:9090/appName retry=1 acquire=3000 timeout=600 Keepalive=On
    ProxyPassReverse /mdt http://13.2XX.XXX.XX:9090/appName
</VirtualHost>

Tomcat 配置 - /conf/server.xml

 <Connector port="9090" protocol="HTTP/1.1"
               connectionTimeout="120000"
               acceptCount="200"
               maxThreads="3200"
               minSpareThreads="80" 
               maxSpareThreads="160"
               compression="on"
               compressableMimeType="text/html,text/xml,text/plain"   
               redirectPort="8443"
/>

我还观察到 Apache 没有释放导致服务器崩溃的占用内存,当内存达到 90% 时,我必须监视并重新启动 apache。

有人能帮我吗 !!任何帮助将不胜感激

标签: apachessltomcathttpd.confmod-ssl

解决方案


我在 apache virtualhost 中添加了下面的配置来解决这个问题。

< VirtualHost XXXX>
<Proxy *>
    Order deny,allow
        Allow from all
    </Proxy>
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass /mdt http://13.2XX.XXX.XX:9090/appName retry=1 acquire=3000 timeout=600 Keepalive=On
    ProxyPassReverse /mdt http://13.2XX.XXX.XX:9090/appName

 SetEnv force-proxy-request-1.0 1
 SetEnv proxy-nokeepalive 1
</VirtualHost>

推荐阅读