【发布时间】:2016-06-27 23:27:17
【问题描述】:
最近,我们将 apache 切换到 nginx,并为我们的 Web 应用程序提供 http2 支持,我们看到了很多 499 错误。
我们的设置:
- 在 Amazon AWS 上运行的 Ubuntu 机器
- Nginx/1.9.12 充当节点应用程序(同一台机器)的代理(和 ssl 卸载)
- 客户端单页应用
我最初的想法是客户端只是关闭浏览器,但从日志中,我看到大约 95% 的客户端处于活动状态,并且在收到 499 后还有请求。
55% 的 499 错误发生在 http2 和 45% 的 http1.1 版本,所以这里没有趋势。 80% 的请求来自移动设备(连接不良?)
但特别担心有一个端点可能需要 5-15 秒才能完成(PUT 请求)。对于那个端点:
- ~95% 的 499 错误是针对 http2 版本的
- ~95% 的请求来自移动设备
- 几乎所有客户端都处于活动状态(我们从日志中看到,因为请求失败后,客户端 javascript 向不同端点发出另一个请求)
- 没有时间模式 - 有时客户端会在 0.1 秒后获得 499,有时会在 3-9 秒后获得 499
- 日志没有表明上游节点有任何问题,并且这种情况经常发生,并且负载不重。
我尝试将keepalive 添加到上游,并启用proxy_ignore_client_abort,但这似乎没有帮助。
任何提示如何解决这个问题?
【问题讨论】:
-
你发现了吗?
-
是的,手机连接不稳定,基本上就是因为网络不稳定、转塔、省电等原因断掉了。这么长时间都不能有可靠的连接,我们改用id轮询一切都很好
标签: nginx