![对端重置连接:ajp_ilink_receive() 无法接收标头](https://linux22.com/image/716736/%E5%AF%B9%E7%AB%AF%E9%87%8D%E7%BD%AE%E8%BF%9E%E6%8E%A5%EF%BC%9Aajp_ilink_receive()%20%E6%97%A0%E6%B3%95%E6%8E%A5%E6%94%B6%E6%A0%87%E5%A4%B4.png)
我看到这个Liferay 6(基于 Tomcat 的集群 Web 应用程序)的日志:
APR does not understand this error code: proxy: read response failed from [::1]:8009 (localhost)
The timeout specified has expired: ajp_ilink_receive() can't receive header
ajp_read_header: ajp_ilink_receive failed
[... the 3 lines above repeated many times ...]
Connection reset by peer: ajp_ilink_receive() can't receive header
APR does not understand this error code: proxy: read response failed from (null) (localhost)
ajp_read_header: ajp_ilink_receive failed
[... the 3 lines above repeated many times ...]
当出现以下情况时,Web 应用程序将变得不可用(Web UI 不响应 Web 请求)对端重置连接“错误开始出现。
虽然第一个问题(The timeout specified has expired
)是由另一个问题,什么原因通常会导致第二个问题(Connection reset by peer
),这两个问题有什么区别?
答案1
根据其他人在不同网站上提出的这个问题,我建议您设置连接超时。
示例如下。
ProxyPass / ajp://localhost:8009/ timeout=600
https://stackoverflow.com/questions/32093534/ah01030-ajp-ilink-receive-cant-receive-header
mod_proxy_ajp (70007)指定的超时已过期:ajp_ilink_receive() 无法接收标头
如果您已经在配置中指定了连接超时,则另一个用户发现他们是否将 mod_proxy_ajp 更改为 mod_jk。
答案2
我知道超时通常是问题所在,但是在观察到类似的问题(其中大小是 AJP 连接器本身的问题)后,我认为值得发布以在连接器上启用访问日志记录以获得正确的日志记录(因为这不是 jboss 连接器子系统默认完成的)或查看请求的大小,因为 apache 通常会将这些类型的限制设置为高于 tomcat 或 jboss 默认的限制。
1.1.1.1.1 - - [19/Dec/2019:14:33:53 -0500] "POST /app HTTP/1.0" 500532“-” “-”
我添加了一个 Apache 组合日志条目,因为我相信 532 大小暗示了来自 ajp 连接器的响应。在我的案例中,90% 的请求都通过了,除了更大的文档负载,我的开发人员能够检查并识别自己。在查看了 Apache 及其文档中的 ajp 连接器默认值后,我决定将“最大帖子大小”翻倍,并将请求作为 200 通过。我还观察到,当 200 时,Apache 访问日志中的大小会更低,所以我认为 532 大小很重要。