apache错误日志中的Mod群集代理超时

时间:2013-12-23 18:53:04

标签: apache jboss jboss5.x mod-proxy

在我们的环境中,我们会在错误日志中一致地获取这些条目。

[Sun Dec 22 20:29:43 2013] [error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
[Sun Dec 22 20:29:43 2013] [error] ajp_read_header: ajp_ilink_receive failed
[Sun Dec 22 20:29:43 2013] [error] (70007)The timeout specified has expired: proxy: read response failed from (null) (xx.xx.xx.xx)
[Sun Dec 22 20:30:01 2013] [error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header

如果这些错误同时出现在所有节点上,则该站点将抛出998响应代码,直到重新启动使这些错误消失。 Apache正在与后端jboss服务器进行通信。

可能导致这些问题的原因。根据我的观察,可能是因为webservice调用延迟导致AJP连接终止。

如果我错了,请纠正我,如何永久修复此问题。

感谢。

2 个答案:

答案 0 :(得分:1)

(迟到总比没有好)

我有类似的问题;

[Mon Jan 20 13:39:57 2014] [error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
[Mon Jan 20 13:43:26 2014] [error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header

这让我找到了这个:

  

如果未定义nodeTimeout,则使用ProxyTimeout指令代理。如果未定义ProxyTimeout,则使用服务器超时(超时)(默认为300秒)。 nodeTimeout,ProxyTimeout或Timeout在套接字级别设置。

我既没有nodeTimeout也没有ProxyTimeout,它给我们留下了Timeout变量(设置为60秒)。在大多数情况下,60秒就足以让网页返回,但是对应用程序的调查显示,糟糕的MySQL查询需要花费20多分钟(是的,分钟!)来运行。

您可以尝试增加超时,或者更有可能找出网页速度缓慢的原因。

答案 1 :(得分:0)

我修正了这个错误,如下:

 <Proxy *>
    AddDefaultCharset Off

    Order deny,allow

    Allow from all

 </Proxy>

ProxyPass / ajp://backend.example.com:8009/ retry=0 timeout=10 ttl=60

ProxyPassReverse / ajp://backend.example.com:8009/