【发布时间】:2010-12-06 23:53:59
【问题描述】:
我在 JBoss 上运行的 servlet 遇到间歇性问题,Apache 通过 mod_proxy_ajp.so 转发所有请求。
有时,对于 REST 请求,我从 Apache 收到 503 错误。发生这种情况时,Apache error_log 中会包含以下内容:
[Mon Oct 12 09:10:19 2009] [error] (32)Broken pipe: ajp_ilink_send(): send failed
[Mon Oct 12 09:10:19 2009] [error] (32)Broken pipe: proxy: send failed to 127.0.0.1:8009 (localhost)
在几次尝试失败后,它又开始工作了。
我用谷歌搜索了一些,发现我不是唯一遇到问题的人。我找到的唯一解决方案是确保在 JBoss 之后启动 Apache(我在重新启动 JBoss 后重新启动 Apache)。
这个问题的奇怪之处在于,这个 JBoss 中还有其他 servlet 运行,而我没有这个问题。
servlet 基于 CXF JAX-RS。
Apache 是 2.2.6。
【问题讨论】:
-
Broken pipe: send failed消息一般表示连接被对方关闭。您的 JBoss 日志中是否同时有任何异常?也许在 DEBUG 或 TRACE 级别记录了一些可以提供提示的内容。 -
JBoss 日志中根本没有异常,不过我会打开 DEBUG 级别,看看是否能更好地了解可能导致这种情况的原因。