为了账号安全,请及时绑定邮箱和手机立即绑定

当内容长度在 4013-8092 个字符之间时,Google Cloud Run 网站会超时

当内容长度在 4013-8092 个字符之间时,Google Cloud Run 网站会超时

PHP
偶然的你 2023-09-15 10:19:09
此问题发生在 Nginx 和 PHP-FPM 提供的纯 PHP 文件上。我在使用 Symfony 开发网站时偶然发现了这个问题,但有问题的内容长度范围是 3702-15965 (我想知道为什么它与普通 PHP 不同)。到目前为止我尝试过的:超时持续时间为 15 秒,但我尝试将其增加到 300 秒,但仍然超时。所以我猜这是无限循环的事情。它看起来与资源无关,因为即使内容长度为 500 万个字符它也能工作。使用不同的字符创建了各种测试,看看是否可以更改有问题的内容长度范围。答案是否定的,我所有的测试范围都保持不变。我尝试过禁用 gzip。它没有改变长度范围,但响应发生了变化。Gzip 启用响应:“上游请求超时” | Gzip 禁用响应:完全空白笔记:我的本地主机上不存在此问题。很少能正常打开页面。我无法一致地重现这一点。除了“请求超时”行之外,Nginx、PHP 或 GCR 日志中没有任何错误。任何帮助表示赞赏。谢谢。
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

有趣的是,我在写问题时已经解决了这个问题。添加fastcgi_buffering off;到 Nginx 配置修复了该问题。

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


查看完整回答
反对 回复 2023-09-15
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

这是特定于 Nginx 而不是 Cloud Run 的。

当 Nginx 开始接收来自 FastGCI 后端的响应时,它将在内存中缓冲标头响应。如果响应对于内存来说太大,则可以将其中一部分保存到磁盘上的临时文件中,该临时文件由其他变量控制。

通过禁用 fastcgi_buffering,响应将在接收时同步传递到客户端。

查看完整回答
反对 回复 2023-09-15
  • 2 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信