【问题标题】:Nginx + php-fpm random hangNginx + php-fpm 随机挂起
【发布时间】:2017-09-18 06:21:45
【问题描述】:

我有一个使用 Codeigniter 制作的网站,在带有 Nginx 和 PHP-FPM 的 Ubuntu 上运行。 它一直运行良好,直到昨晚,当它开始加载页面非常缓慢时,有时会给出 504,有时会快速加载页面。

如果我重新启动 nginx 或 php-fpm,站点可以正常工作 20-30 秒,然后问题再次出现。

这是 nginx 错误日志的内容:

[错误] 25226#25226:*65 上游超时(110:连接超时 out) 从上游读取响应头时,客户端:X.X.X.X, 服务器:www.mydomain.ext,请求:“GET / HTTP/1.1”,上游: “fastcgi://unix:/var/run/php/php5.6-fpm.sock:”,主机: "www.mydomain.ext"

在过去的几个小时里,我一直在谷歌上搜索和玩弄 nginx 和 php-fpm 配置,但我无法解决它。

有人知道如何帮助我吗?

【问题讨论】:

  • 您的应用程序是否与数据库交互?由于无法连接到我的数据库服务器,或者查询的完成时间比 fpm 进程的 max_execution_time 更长,我之前收到过此消息。

标签: php codeigniter nginx


【解决方案1】:

在我看来,这似乎是 FPM 流程管理的问题。有关更多信息,请参阅此link。似乎您有可用于 php-fpm 的静态进程数,并且流量超过了它。我遇到了类似的问题,但我不记得这是否是当时的确切错误消息。但是行为就像你解释的那样,一些连接真的很慢(等待 fpm?)其他的会到 504。

更新: 要确认我的理论,您应该检查文件 /etc/php5.6/pool.d/www.conf 并检查这一行:

pm.max_children = X

增加数字并重新启动 fpm。然后看看问题是否解决了。

【讨论】:

    【解决方案2】:

    尝试如下修改你的配置:

    pm = ondemand
    pm.max_children = 200
    pm.process_idle_timeout = 1s
    pm.max_requests = 1000
    

    重启fpm,你的问题应该解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-19
      • 2021-05-19
      • 1970-01-01
      • 2023-03-18
      • 2015-05-25
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      相关资源
      最近更新 更多