nginx php-fpm 和 ubuntu 出现随机 502 网关错误

2024-04-09

我在使用 nginx 和 php-fpm 时遇到随机 502 网关错误的问题。就我而言,我发现了一个场景,其中各种 php.ini error_log 设置和 error_reporting 级别导致出现随机 502 网关错误。

通过更改 php.ini 设置 error_reporting 和 error_log,我能够使 502 网关错误消失 - 但更重要的是,我能够在日志中看到真正的 php 错误并修复它们。

主要问题是,如果“error_reporting 设置为显示通知”,“error_logging = On”,那么我需要确保 error_log 设置为可写入服务器的有效路径。

// !!! 502 Gateway Error (unhappy server)
error_reporting = E_ALL & E_NOTICE
; error_log = php_errors.log (note this is commented)

// Happy Server, no 502 gateway error
error_reporting = E_ALL & E_NOTICE
error_log = /valid/log/path/and/permissions

// Happy Server, no 502 gateway error
error_reporting = E_CORE_ERROR
; error_log = php_errors.log (note this is commented)

请注意,实际错误是 php 通知...但是 nginx 为与未设置属性相关的 php 通知抛出 502 网关错误。

另请注意,并非每个 php 通知都会触发 502 网关错误。

希望这可以减轻某人的挫败感!


Nginx 中的 502 网关错误是由 php-fpm 没有足够的进程和/或超时引起的。日志记录仅告诉您问题是什么,而不是 502 错误的原因。

我在25台服务器上使用stunnel+haproxy+nginx+php-fpm。 pfp-fpm 中的默认值非常低,即使对于中等繁忙的服务器也是如此。配置 fpm 子进程的方式与使用 apache mod_php 的方式非常相似。

我使用以下内容:

pm.max_children = 250
pm.start_servers = 20
pm.min_spare_servers =10
pm.max_spare_servers = 20
pm.max_requests = 1500

这是一台具有 2GB RAM 的服务器。每天提供 20-30GB 流量,没有 502

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx php-fpm 和 ubuntu 出现随机 502 网关错误 的相关文章