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 即调整到位。

标签
php高并发php-fpm