首页 > 解决方案 > 在 Grizzly 上运行的 Java Web 应用程序出现零星的 502 错误

问题描述

我们的 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 秒持续时间似乎是(https://javaee.github.io/grizzly/httpserverframework.html)的keepAlive属性。NetworkListener

编辑 2:只能通过使用AsyncResponse重复调用 API 来重现问题;调用其他端点不会触发此行为。

标签: javagrizzly

解决方案


可能是应用程序的连接或线程中的并发问题,也许您正在打开到后端的许多连接,直到达到限制,或者您的连接没有关闭线程。


推荐阅读