首先,我一直在互联网上寻找解决方案。下面只是最新的链接,提供了一些信息,但似乎没有发挥作用。
Tomcat stops responding to Apache
尽管我在下面概述了许多配置更改,但我未能防止出现在日志中的错误:
[Tue Jan 07 14:56:12.158345 2014] [proxy_ajp:error] [pid 12094:tid 140002805655296] (70007)The timeout specified has expired: AH01030: ajp_ilink_receive() can't receive header
[Tue Jan 07 14:56:12.158409 2014] [proxy_ajp:error] [pid 12094:tid 140002805655296] [client 10.4.65.146:58551] AH00992: ajp_read_header: ajp_ilink_receive failed, referer: http://xxxx/yyy/
[Tue Jan 07 14:56:12.158430 2014] [proxy_ajp:error] [pid 12094:tid 140002805655296] (70007)The timeout specified has expired: [client 10.4.65.146:58551] AH00878: read response failed from 10.4.3.33:8009 (tomcatworkerX), referer: http://xxxx/yyy/
[Tue Jan 07 14:56:12.229559 2014] [proxy_balancer:error] [pid 12094:tid 140002932012800] [client 10.4.230.138:57407] AH01167: balancer://lb: All workers are in error state for route (tomcatworkerX), referer: http://xxxx/yyy/zzz
向下运行的用户会看到“服务器不可用”屏幕,但是连接会在几分钟后恢复。然而,有时相同的服务器连接会上升/下降很多次;这可能是由于用户在同一服务器上的行为(我使用粘滞会话),但我无法确认这一点。
我的配置是在Windows环境中运行一个Apache实例,通过AJP配置了4个Tomcat工作人员。目前,所有Tomcat工作人员都在单独的主机上托管在Windows下。
我的场景中的所有主机都是健壮的生产环境中的VM,每个内核都有多个内核。
Apache版本:
Server version: Apache/2.2.22 (Win32)
Tomcat是7.0.29版
每个BalancerMember都有以下配置参数:
keepalive=On timeout=600 ttl=600
当前使用本机连接器(org.apache.coyote.ajp.AjpAprProtocol)的每个Tomcat实例。
连接器配置:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" maxThreads="450" connectionTimeout="600000" />
应用程序本身通过Oracle ojdbc15_g JDBC驱动程序v11.2.0.3.0连接到Oracle。
我观察到的事情:
至于我现在正在做什么来尝试解决这个问题,我觉得我已经用尽了我的配置能力(这包括在网上搜索每一个可能的解决方案,因为我是一个软件行业的人,而不是基础设施)。因此,我通过切换平台尝试了一种不同的策略:我在Linux机器上运行了Apache get服务器,并且使用DNS循环,一部分用户通过Linux而不是Windows路由。这似乎没有帮助,但Tomcat工作人员仍然运行在相同的Windows框上。
我目前也在Linux机器上安装Tomcat应用程序,当我有了这种稳定性时(由于假设Windows是该应用程序唯一的平台,所以需要进行一些小的代码更改),我将作为一个工作人员添加这个程序,以查看该特定实例是否遇到了相同的问题。
如果没有别的,我想确认一下,我对长时间执行请求的怀疑是正确的。我尝试过各种配置更改,但都没有效果。
发布于 2015-07-09 19:15:37
这个错误在apache error_log中.
我们在阿帕奇前面有一个超时差600的ELB。tomcat设置为超时600
我们的错误是webserver超时。
如果apache未显式配置,则超时时间为60秒。
例如,TimeOut 600在httpd.conf中
apache webserver和tomcat实例之间的超时可能会在长时间运行的会话中超时.例如,一个长api调用。
https://stackoverflow.com/questions/20982988
复制相似问题