提问者:小点点

Apache Webserver、Tomcat、AJP,“所有工作人员都处于路由错误状态”


首先,我一直在互联网上试图找到一个解决方案。下面只是提供了一些信息的最新链接,然而这些链接似乎都不起作用。

https://serverfault.com/questions/19947/apachetomcat-having-problems-communicating-unclear-error-messages-bringing-do

Tomcat停止响应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 Webserver实例,通过AJP配置了4个Tomcat工作器。目前,所有Tomcat工作器都托管在不同主机上的Windows下。

我的场景中的所有主机都是健壮的正式生产环境中的VM,每个主机都有多个内核。

Apache版本:

Server version: Apache/2.2.22 (Win32)

Tomcat是7.0.29版本

每个平衡会员都有这些配置参数:

keepalive=On timeout=600 ttl=600

当前使用本机连接器(org. apache.coyot.ajp.AjpAprProtocol)的每个Tomcat实例。

连接器配置:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" maxThreads="450" connectionTimeout="600000" />

应用程序本身通过Oracleojdbc15_gJDBC驱动程序v11.2.0.3.0连接到Oracle。

我观察到的事情:

    null

至于我现在正在做什么来尝试解决这个问题,我觉得我已经用尽了我的配置能力(包括在网上搜索每一个可能的解决方案,因为我是一个贸易软件人,而不是基础设施)…所以我尝试了一种不同的策略,通过切换平台:我在Linux机器上运行Apache网络服务器,并使用DNS循环,一部分用户通过Linux而不是视窗进行路由。这似乎没有帮助,但是Tomcat工作人员仍然在相同的视窗盒子上运行。

我目前正在将Tomcat应用程序本身安装在Linux机器上,当我有了稳定的(由于假设Windows是应用程序将托管的唯一平台,因此需要进行一些小的代码更改)时,我将作为工作人员添加它,以查看该特定实例是否遇到相同的问题。

如果没有别的,我想确认我对长时间执行的请求的怀疑是正确的路径。我尝试了各种配置更改,但没有结果。


共1个答案

匿名用户

这个错误在apacheerror_log…

我们在apache前面有一个超时600的ELB… tomcat设置为超时600

我们的错误是网络服务器超时

如果没有显式配置apache,它的超时时间是60秒

以httpd. conf中的TimeOut 600为例

apache网络服务器和tomcat实例之间的超时可能会在长时间运行的会话上超时……例如,长api调用。