使用 fastcgi_finish_request() 时,Nginx 在每个页面上间歇性地抛出 502

使用 fastcgi_finish_request() 时,Nginx 在每个页面上间歇性地抛出 502

我最近接手了 AWS 中 2 个 Nginx 设备的管理,对 PHP-FPM 的工作方式非常不熟悉(而且无法工作)。我最近集成了 Keen.IO 来进行后端用户日志记录,使用:

fastcgi_finish_request();

在 php 中完成请求,然后继续登录 Keen。除了延迟较高之外,这似乎运行良好,我认为用户没有遇到延迟,因为他们已经断开连接。

然而今天,随着流量的增加,我们开始收到 502 网关错误,并且两台服务器都出现以下错误:

[error] 2356#0: *70245 upstream sent unexpected FastCGI record: 3 while reading response header from upstream, client: (ADDRESS), server: igun-api-slaves.crimson-moon.com, request: "GET (Address)", upstream: "fastcgi://unix:/var/run/php-fpm/product1.socket:", host: "ADDRESS"

我们所有的页面都会发生这种情况,而不仅仅是我使用日志记录修改的页面。我完全不知所措,因为这对我来说都是新情况。这个错误到底是什么意思?

- 编辑

我现在在 AWS 云监控中看到,自从编辑代码以来就一直出现错误,而不仅仅是在流量建立时出现。

答案1

日志消息意味着 PHP-FPM 正在发送 nginx 无法理解的记录类型 ID。正如您可能已经猜到的那样,记录类型 3 对应于 FCGI_END_REQUEST。因此,nginx 的 FCGI 支持似乎不完整,因为它无法识别和正确处理此记录类型。

我建议要么打开你的编辑器并修补 nginx,要么停止调用fastcgi_finish_request(),并想出其他方法来实现你想要做的事情。

答案2

此错误似乎是由 PHP 中的错误引起的,该错误无法正确处理 fastcgi_finish_request()

https://bugs.php.net/bug.php?id=67583

可以通过关闭 Ngynx 设置中的 fastcgi_keep_conn 来解决此问题。

相关内容