web服务器
技术随笔
PHP-FPM 日志 seems busy 告警:进程数不足调优
PHP-FPM 日志出现 WARNING: [pool www] seems busy ... spawning N children, there are 0 idle,说明当前进程数不足以应对并发,需要调大 pm 相关参数。
一、如何判断
- 级别是 WARNING,通常对业务影响较小,但持续增长说明容量不足。
- 日志里
spawning 8 children提示至少需要 8 个进程;there are 0 idle表示没有空闲进程。
二、排查当前进程数
ps -ef | grep php-fpm # 找到 master 进程与配置文件位置,确认当前 child 数量
三、调整 php-fpm.conf(pm = dynamic 时)
pm.start_servers = 20 # 启动时的子进程数 pm.min_spare_servers = 20 # 最小空闲进程 pm.max_spare_servers = 40 # 最大空闲进程 pm.max_children = 50 # 最大子进程数(硬上限)
经验:max_children 取决于内存(每个 PHP 进程约 20~40MB);start_servers / min_spare_servers 设为日志中 spawning 数量的 2~3 倍较稳妥。
四、生效
/etc/init.d/php-fpm reload # 或 systemctl reload php-fpm
重载后持续观察日志,若不再出现 seems busy 即调整到位。