节点上游和http2

时间:2016-03-12 18:48:15

标签: nginx

最近我们已经将apache切换到nginx,并为我们的Web应用程序提供了http2支持,我们看到了很多499错误。

我们的设置:

  • 在Amazon AWS上运行的Ubuntu计算机
  • Nginx / 1.9.12作为节点应用程序的代理(和ssl offload)(同一台机器)
  • 客户端的单页应用

我最初的想法是客户只是关闭他们的浏览器,但是从日志中,我看到~95%的客户端还活着,并且在获得499后有请求。

http2的499个错误中有55%,http1.1版本的错误发生率为45%,所以这里没有趋势。 80%的请求来自移动设备(连接错误?)

但特别担心有一个端点可能需要5-15秒才能完成(PUT请求)。对于该端点:

  • 〜499个错误的95%用于http2版本
  • ~95%的请求来自移动设备
  • 几乎所有客户端都还活着(我们从日志中看到,因为请求失败后请求客户端javascript向另一个端点发出另一个请求)
  • 没有时间模式 - 有时客户在0.1秒之后获得499,有时3-9秒
  • 日志并不表示上游节点出现任何问题,而且这种情况经常发生,并且没有重负载。

我已尝试将keepalive添加到上游,并启用proxy_ignore_client_abort,但这似乎没有帮助。

任何提示如何排除故障?

1 个答案:

答案 0 :(得分:0)

我正在阅读this unanswered question,这表明一个潜在的来源是来自不耐烦的客户点击刷新按钮。

这似乎与您观察到客户端还活着,并且在获得499 之后有请求一致。