我已在同一个 CentOS 6 服务器上将 Apache tomcat7 配置为后端,将 apache2.2 配置为前端,以下是我的部分配置
Server.xml
:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" connectionTimeout="600000" maxKeepAliveRequests="100" URIEncoding="UTF-8"/>
& 在httpd.conf
:
ProxyRequests Off
Timeout 600
ProxyTimeout 600
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
问题是,我的 tomcat 服务器上的一些 servlet 需要大约 3 分钟才能完成,但一分钟后,打开的服务器套接字(无论我使用什么客户端,无论是浏览器还是任何其他客户端应用程序)都会被服务器意外关闭(无论如何,servlet 执行会一直持续到最后,即使套接字已关闭)。
我更改了的sysctl.conf
值,我确信这不是操作系统超时问题,因为当我访问另一个不使用 mod_proxy 的耗时脚本时(例如,在同一 apache 服务器上执行时间为 3 分钟的 PHP 脚本),它在所有客户端上都能正常工作。 任何建议都将不胜感激net.ipv4.tcp_fin_timeout
600
答案1
尝试在代理指令中设置连接超时,如下所示
ProxyPass / ajp://localhost:8009/ connectiontimeout=600 timeout=600
ProxyPassReverse / ajp://localhost:8009/
我将这些设置用于我的应用程序,并且运行良好