Google Cloud 运行 内容长度在 4013-8092 个字符之间时网站超时。到底是怎么回事?

Google Cloud Run website timeouts when content length is between 4013-8092 characters. What is going on?

此问题发生在由 Nginx 和 PHP-FPM 提供的纯 PHP 文件上。我在使用 Symfony 开发我的网站时偶然发现了这个问题,但有问题的内容长度范围是 3702-15965(我想知道为什么它与 vanilla PHP 不同)。

到目前为止我尝试过的:

备注:

感谢任何帮助。谢谢

有趣的是,我在写问题的同时解决了问题。将 fastcgi_buffering off; 添加到 Nginx 配置可解决此问题。

但我仍然不明白问题出在哪里以及为什么禁用缓冲可以解决问题。因此,如果有人可以解释它,我不介意将该答案标记为解决方案。

这是特定于 nginx 而不是 Cloud 运行。当 nginx 开始接收来自 FastGCI 后端的响应时,它将在内存中缓冲 header 响应。如果响应对于内存而言太大,可以将其中一部分保存到磁盘上的临时文件中,该临时文件由其他变量控制,如 here 所述。通过禁用 fastcgi_buffering,响应在收到时同步传递给客户端。您可以在这些文章中找到更多信息[1][2][3]

[1] upstream sent too big header while reading response header from upstream

[2] Nginx upstream sent too big header while reading response header from upstream

[3]https://gist.github.com/magnetikonline/11312172#determine-fastcgi-response-sizes