在 Ubuntu 上,php-fpm 的进程数主要通过 www.conf 配置文件中的 pm(进程管理模式)相关参数来设置。下面按常见场景给你说明。
通常路径(以 PHP 8.1 为例,版本号按需替换):
/etc/php/8.1/fpm/pool.d/www.conf
编辑:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
修改后重启:
sudo systemctl restart php8.1-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
含义:
pm.max_children:最大子进程数(最重要)pm.start_servers:启动时的进程数pm.min_spare_servers:最小空闲进程pm.max_spare_servers:最大空闲进程✅ 适合:流量波动较大的网站
pm = static
pm.max_children = 50
✅ 适合:高并发、内存充足、CPU 核心多
pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 10s
✅ 适合:低流量 / 内存小的服务器
pm.max_children = 可用内存 / 单个 php-fpm 进程内存
例如:
2048 / 40 ≈ 50
⚠️ 不要超过内存,否则会 OOM(卡死 / 重启)
查看进程内存:
ps -ylC php-fpm8.1 --sort:rss
查看当前进程数:
ps aux | grep php-fpm
查看状态(可选开启):
pm.status_path = /status
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm = static
pm.max_children = 80
如果你愿意,可以告诉我:
我可以直接帮你算一套最优配置。