在Grizzly上运行的Java Web应用程序偶尔出现502错误

时间:2019-01-16 12:07:09

标签: java grizzly

我们从Web应用程序中收到零星的502错误;我们可以通过重复多次相同的调用来重现此错误:在第8-12次时,它挂起〜30秒,然后返回“ 502 Proxy Error” 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秒持续时间似乎是keepAlivehttps://javaee.github.io/grizzly/httpserverframework.html)的NetworkListener属性。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

已解决:升级到Jersey 2.26可以解决此问题,尽管我并没有理解发生这种情况的原因。