如何修复 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 个并行连接进行补偿)。大幅增加该限制的缺点是您可以同时处理更多请求,争用带宽。
你基本上有两种选择来解决这个问题:
- 更改您的应用程序以限制上传,而不是期望浏览器或协议为您执行此操作。
- 限制您的网络服务器允许的最大并发流数。例如,在 Apache 中,这由 H2MaxSessionStreams Directive 控制,而在 Nginx 中,它同样由
http2_max_concurrent_streams config。其他流需要等待。
我在我的服务器上激活 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 个并行连接进行补偿)。大幅增加该限制的缺点是您可以同时处理更多请求,争用带宽。
你基本上有两种选择来解决这个问题:
- 更改您的应用程序以限制上传,而不是期望浏览器或协议为您执行此操作。
- 限制您的网络服务器允许的最大并发流数。例如,在 Apache 中,这由 H2MaxSessionStreams Directive 控制,而在 Nginx 中,它同样由 http2_max_concurrent_streams config。其他流需要等待。