我有一个Apache服务器(服务器版本:Apache/2.2.22 (Ubuntu))在一组三个tomcat6服务器前面。Apache使用mod_proxy和AJP连接器设置为负载平衡器:
<VirtualHost *:80>
ProxyRequests off
<Proxy balancer://mycluster>
BalancerMember ajp://localhost:8009 keepalive=On retry=1 timeout=15 ping=1
BalancerMember ajp://10.0.3.152:8009 keepalive=On retry=1 timeout=15 ping=1
BalancerMember ajp://10.0.3.153:8009 keepalive=On retry=1 timeout=1 ping=15
Order Deny,Allow
Deny from none
Allow from all
ProxySet lbmethod=byrequests
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Allow from all
</Location>
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/
</VirtualHost>
Tomcat正在运行以下JAVA_OPTS:
-Xms2048m -Xmx2048m -XX:NewSize=256m
-XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m
系统工作正常,但是过了一会儿,我从Tomcat收到这些错误:
org.apache.jk.common.ChannelSocket processConnection
WARNING: processCallbacks status 2
这个来自Apache:
[error] ajp_read_header: ajp_ilink_receive failed
[error] (70007)The timeout specified has expired: proxy: read response failed from 127.0.0.1:8009 (localhost)
[error] (70007)The timeout specified has expired: ajp_ilink_receive() can't receive header
我必须重新启动Tomcat才能使它再次工作。
知道发生了什么事吗?在谷歌搜索了一段时间后,似乎这是一个相当普遍的问题,但我没有找到一个适当的解决方案。
谢谢你的帮助!
视情况而定——一个很常见的原因是无害的;看到:
http://mail-archives.apache.org/mod_mbox/tomcat-users/200905.mbox/%3C6B028542C4A77D4CB7F06CCC1C1AEB1D018BC5CEE0@AUSP01VMBX03.collaborationhost.net % 3 e。apache关闭,因为客户端(浏览器)关闭了TCP连接,并且在tomcat将其应答发送到内部TCP套接字之前所有已传播的连接。
所以我提高了日志级别来确认它-然后适当地缩小它用于生产。
如果这篇文章/问题尚未开放…
尝试增加mod_proxy超时时间。
这些类型的错误,我看到这些通常发生由于延迟在webservice调用