如何修复 HTTP/2.0 使用 HTTP/2 时多个同时 XHR 连接的 504 网关超时

How to fix HTTP/2.0 504 Gateway Timeout for multi simultaneous XHR connections when using HTTP/2

我在我的服务器上激活 HTTP/2 支持。现在我遇到了 AJAX/jQuery scipts 的问题,比如上传或 Api 处理。

在 php 60 秒的 max_input_time 之后,我得到:[HTTP/2.0 504 网关超时 60034ms]

与 HTTP/1 只有几个连接同时启动,一个完成后另一个启动。 HTTP/2 全部立即开始。

例如,当要上传 100 张图片时,所有图片都需要很长时间。

我不想更改 max_input_time。我希望在脚本中限制同时连接。

谢谢

HTTP/2 有意允许多个并行请求。这与 HTTP/1.1 不同,后者一次只允许一个请求(但浏览器通过打开 6 个并行连接进行补偿)。大幅增加该限制的缺点是您可以同时处理更多请求,争用带宽。

你基本上有两种选择来解决这个问题:

  1. 更改您的应用程序以限制上传,而不是期望浏览器或协议为您执行此操作。
  2. 限制您的网络服务器允许的最大并发流数。例如,在 Apache 中,这由 H2MaxSessionStreams Directive 控制,而在 Nginx 中,它同样由 http2_max_concurrent_streams config。其他流需要等待。