【发布时间】:2019-01-16 12:07:09
【问题描述】:
我们的 Web 应用程序出现零星的 502 错误;我们可以通过多次重复相同的调用来重现这一点:在第 8-12 次它挂起约 30 秒,然后返回“502 代理错误”html。
我们通过登录一台受影响的机器并使用 curl 直接在 localhost:8080 上调用应用程序来排除这是 AWS 或 Apache 的问题;经过一些调用,我们得到:
* Recv failure: Connection reset by peer
* stopped the pause stream!
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer
查看应用程序日志,似乎有问题的调用从未到达应用程序(它们从未被记录)。
Web 应用程序基于 Java,使用 Grizzly 容器 (org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.25.1)。
编辑: 30 秒挂起呼叫的持续时间似乎是 NetworkListener (https://javaee.github.io/grizzly/httpserverframework.html) 的 keepAlive 属性。
编辑 2: 只能通过使用 AsyncResponse 重复调用 API 来重现该问题;调用其他端点不会触发此行为。
【问题讨论】: