PHP-FPM 进程突然卡住
Posted
技术标签:
【中文标题】PHP-FPM 进程突然卡住【英文标题】:PHP-FPM processes gets stuck out of sudden 【发布时间】:2015-02-07 02:26:45 【问题描述】:在升级到 php 5.5 时,我遇到了 php-fpm 的问题。
我已经使用新的 PHP 版本创建了一个新的 Web 节点,并且我正在负载均衡器上对其进行登录以在 prod 中对其进行测试。一切正常,直到许多 php-fpm 进程突然卡住(大约 1 小时后)。此后我收到超时。
我已将发行版从 Debian 更改为 Ubuntu,并升级到 PHP 5.5。除此之外,新服务器与以前相同(当一切正常/正常时)。
我已尝试登录两个新的 Web 节点,但它们会同时卡住。 我认为这可能与数据库的突然响应缓慢有关(因为这是他们共享的唯一内容)。
但是,我希望 php-fpm 不要崩溃,所以当数据库再次正常时它会工作。
现在要修复它,我可以重新启动 php-fpm 服务,但这不是一个可靠的计划。
ps aux | grep php
给我看:
root 13919 0.0 0.4 423472 19736 ? Ss Dec08 0:10 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 14087 0.0 3.1 474972 127284 ? S Dec08 0:54 php-fpm: pool www
www-data 14088 0.0 2.3 446944 94956 ? S Dec08 0:50 php-fpm: pool www
www-data 14089 0.1 2.2 443816 92644 ? S Dec08 1:03 php-fpm: pool www
www-data 14090 0.0 3.0 474208 124716 ? S Dec08 0:44 php-fpm: pool www
www-data 14092 0.0 3.1 478284 129060 ? S Dec08 0:41 php-fpm: pool www
www-data 14099 0.0 2.5 459700 105224 ? S Dec08 0:14 php-fpm: pool www
www-data 14111 0.0 2.0 439876 84952 ? S Dec08 0:06 php-fpm: pool www
www-data 14114 0.0 0.4 427220 18472 ? S Dec08 0:00 php-fpm: pool www
www-data 14115 0.0 0.4 427220 18380 ? S Dec08 0:00 php-fpm: pool www
www-data 14116 0.0 0.4 427184 18936 ? S Dec08 0:00 php-fpm: pool www
www-data 14117 0.0 0.4 427204 18904 ? S Dec08 0:00 php-fpm: pool www
www-data 14118 0.0 0.4 427220 18372 ? S Dec08 0:00 php-fpm: pool www
www-data 14119 0.0 0.4 427184 18832 ? S Dec08 0:00 php-fpm: pool www
www-data 14120 0.0 0.4 427188 18960 ? S Dec08 0:00 php-fpm: pool www
www-data 14121 0.0 0.4 427220 18384 ? S Dec08 0:00 php-fpm: pool www
www-data 14122 0.0 0.4 427200 18932 ? S Dec08 0:00 php-fpm: pool www
www-data 14123 0.0 0.4 427236 18488 ? S Dec08 0:00 php-fpm: pool www
www-data 14124 0.0 0.4 427220 18392 ? S Dec08 0:00 php-fpm: pool www
www-data 14125 0.0 0.4 427220 18384 ? S Dec08 0:00 php-fpm: pool www
www-data 14126 0.0 0.4 427204 18820 ? S Dec08 0:00 php-fpm: pool www
www-data 14127 0.0 0.4 427220 18484 ? S Dec08 0:00 php-fpm: pool www
www-data 14128 0.0 0.4 427204 18920 ? S Dec08 0:00 php-fpm: pool www
www-data 14129 0.0 0.4 427188 18904 ? S Dec08 0:00 php-fpm: pool www
www-data 14130 0.0 0.4 427220 18372 ? S Dec08 0:00 php-fpm: pool www
www-data 14131 0.0 0.4 427188 18920 ? S Dec08 0:00 php-fpm: pool www
www-data 14132 0.0 0.4 427220 18372 ? S Dec08 0:00 php-fpm: pool www
www-data 14133 0.0 0.4 427204 18936 ? S Dec08 0:00 php-fpm: pool www
www-data 14134 0.0 0.4 427220 18388 ? S Dec08 0:00 php-fpm: pool www
www-data 14135 0.0 0.4 427220 18368 ? S Dec08 0:00 php-fpm: pool www
www-data 14136 0.0 0.4 427184 18936 ? S Dec08 0:00 php-fpm: pool www
您可以看到 24 个进程已经运行了 0 秒(htop 告诉我它大约是 2 毫秒)。他们将永远保持这种状态。全部同时出现。
我的配置:
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
log_level = debug
user = www-data
group = www-data
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 7
pm.max_requests = 500
另外,我从未在 php-fpm.log 中看到任何内容(只是 NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful
)
有人吗?
编辑:
我试过同时运行ondemand
和dynamic
进程管理器
【问题讨论】:
相关:serverfault.com/questions/833968/… 更多信息查看:shubhamjain.co/2015/09/10/… 【参考方案1】:我无法发表评论,尽管您应该检查与 php 相关的日志文件:
( /var/www/ )
( (hostname)/logs/error_log )
和
( /var/log/php5-fpm.log )
【讨论】:
/var/log/php5-fpm.log
为空。我的 php 错误日志没有记录任何感兴趣的内容(仅来自我的应用程序的错误)。
在你的 shell 中试试这个:for i in 1..100; do php-fpm ; killall php-fpm; done
嗯,我很容易杀死它们并让它再次工作。我可以重新启动 php-fpm 服务。但它只会帮助我,直到它再次崩溃。我正在寻找发生这种情况的原因。
根据我提到的测试结果,它可能与另一个进程发生冲突。如果您遇到分段错误,那么这可能是罪魁祸首。还可以考虑将 php5-fpm 作为守护进程运行 (ma.ttias.be/a-better-way-to-run-php-fpm)
对不起。我得到:没有找到命令 'php-fpm',你的意思是:来自包 'php5-fpm'(universe)的命令 'php5-fpm' php-fpm:找不到命令 php-fpm:找不到进程。以上是关于PHP-FPM 进程突然卡住的主要内容,如果未能解决你的问题,请参考以下文章
php-fpm的pool php-fpm慢执行日志 open_basedir php-fpm进程管理
php-fpm的pool php-fpm慢执行日志 open_basedir php-fpm进程管理
如何用supervisor守护php-fpm主进程以实现php-fpm的自动重启