Nginx + php-fpm 随机挂起

10

我有一个使用Codeigniter制作的网站,运行在Ubuntu上,使用Nginx和PHP-FPM。

一直到昨晚为止,它都很正常,但突然开始加载页面非常慢,有时会出现504错误,有时则会快速加载页面。

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

下面是nginx的错误日志:

[error] 25226#25226: *65 upstream timed out (110: Connection timed out) while reading response header from upstream, client: X.X.X.X, server: www.mydomain.ext, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php5.6-fpm.sock:", host: "www.mydomain.ext"

我已经通过谷歌搜索并调整了nginx和php-fpm的配置几个小时了,但是问题没有解决。

有人知道如何帮助我吗?


你的应用程序是否与数据库交互?我之前收到过这样的消息,可能是由于无法连接到我的数据库服务器,或者查询时间超过了fpm进程的max_execution_time。 - whitwhoa
2个回答

2
对我来说,这看起来像是FPM进程管理的问题。请参阅此链接以获取更多信息。似乎您为php-fpm提供了静态数量的进程,而流量超出了它。我曾遇到类似的问题,但我不记得当时是否是这个确切的错误消息。但行为就像你所解释的那样,一些连接非常慢(等待fpm?),其他则返回504。
更新: 要确认我的理论,您应该检查文件/etc/php5.6/pool.d/www.conf并检查此行:
pm.max_children = X

增加数量并重新启动fpm,然后查看问题是否已解决。

0
尝试按照以下方式修改您的配置文件:
pm = ondemand
pm.max_children = 200
pm.process_idle_timeout = 1s
pm.max_requests = 1000

重新启动FPM,你的问题应该就解决了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接