java - 在 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 来重现问题;调用其他端点不会触发此行为。
解决方案
可能是应用程序的连接或线程中的并发问题,也许您正在打开到后端的许多连接,直到达到限制,或者您的连接没有关闭线程。
推荐阅读
- java - 如何为应用用户注册/订阅 OneSignal 中的主题?
- python - 检查具有不同值系统的两个数据框列的相似性
- php - PhpStorm PestPHP 不应该发生
- c# - 如何保存神经元训练数据?
- python - 给定一个大小为 n 的数组 arr 和一个整数 X。查找数组中是否有一个三元组的总和为给定整数 X
- reactjs - 在使用提供者包裹的屏幕中未收到道具
- .net-core - 如何在 dot net core 项目中使用 IConfiguration 访问自定义 JSON 文件?
- javascript - 如何在 express js 中解析多部分/混合请求正文?
- delphi - TFileStream 将数据写入下一行
- numpy - Pytorch / Numpy 维度数学:为什么 [n] + [n, 1] = [n, n]