使用 PHP-FPM 的 Nginx 偶尔会出现输出损坏的情况

使用 PHP-FPM 的 Nginx 偶尔会出现输出损坏的情况

我有一个 PHP 文件,通过 Nginx 服务器和 PHP-FPM 生成大量 JSON(~1.5 MB),运行在 macOS 上。

偶尔(约占请求的 2%),输出的 JSON 会损坏。主体的长度始终相同,但看起来好像各种字节块(可能长度不同)被重新排序,从而导致损坏。

在以下情况下不会发生随机损坏:

  • 无需 PHP,直接通过 Nginx 提供相同但静态的 JSON 文件。
  • 使用命令行直接从 PHP 生成 JSON。

在以下情况下,仍会发生随机损坏:

  • 让 PHP 拥有readfile静态 JSON 文件,而不是动态生成 JSON 本身。
  • 其他脚本生成通过 PHP 发送的大量数据,即使它不是 JSON。

Nginx 或 PHP-FPM 日志中没有错误,其他一切似乎都正常工作。Nginx 和 PHP 是通过 Homebrew 安装的,通常配置为最新版本(尽管我已经处理这种损坏问题一年左右了):

nginx 版本:nginx/1.17.3

PHP 7.1.23 (fpm-fcgi)(构建于:2019 年 2 月 22 日 22:19:35)

我该如何调试这个问题,或者我可以尝试一些配置来看看是否能修复它?

答案1

我不知道为什么,但我能够通过为 FastCGI 连接切换到 TCP 上的 Unix 套接字来解决问题。看起来好像某个地方有错误,但我不知道该怪谁!

相关内容