nginx 上 PHP 出现 504 网关超时

nginx 上 PHP 出现 504 网关超时

我正在尝试将 PHP Laravel 应用程序从运行 apache 的开发计算机移动到运行 nginx 的服务器。我已经配置了数据库连接,并且我的 Laravel 应用程序(大部分)响应了预期的页面。但是,有时服务器无法快速响应并返回

504 Gateway Time-out

一段时间后。

service php5-fpm restart

或者稍后重试可以暂时解决此问题。我正在使用 nginx 和 PHP 5.6(通过 FPM)、HHVM 和 MySQL。我不想增加最大执行时间,因为脚本本来就不应该花这么长时间。

我怀疑这是新环境中的 PHP 脚本或配置问题。这不应该是 nginx 本身的问题,因为静态资源已正确发送。我该如何排除故障并修复此问题?

答案1

  • 如果您不信任该应用程序,您可以通过在 fpm 池配置中添加内容来设置慢日志,以便记录持续超过 N 秒的每个请求(在 fpm 上)(默认位置往往是(debian):/etc/php5/fpm/pool.d/www.conf)

    slowlog = /path/to/slow.log

    request_slowlog_timeout = Ns

将 N 更改为您想要的秒数,使其低于最大执行时间(因此它将在超时之前记录)

  • 查看使用 fpm 运行的子进程、max_requests 和服务器的数量。如果问题时有发生,则可能是您已达到限制,并且 nginx 没有更多可用连接。

  • 看看你的 nginx 超时值,也许 fpm 超时时间更长,并且 nginx 在得到答案之前就放弃了。

我认为这些提示可能会有所帮助,但我不认为我涵盖了所有可能需要检查的要点,但这些都是很好的开始

相关内容