在 Ubuntu 上,PHP-FPM 本身的“负载”通常指两件事:
下面按常见场景给你讲清楚。
PHP-FPM 通过 pool 配置控制并发能力,文件通常在:
/etc/php/8.1/fpm/pool.d/www.conf
(版本号按你实际来,如 7.4 / 8.2)
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
static:固定进程数(性能最好,但吃内存)dynamic:根据负载动态增减(常用)ondemand:请求来了才起进程(省内存,但慢)max_children ≈ 可用内存 / 单个 php-fpm 进程内存
例如:
max_children = 80~100查看单个进程内存:
ps aux | grep php-fpm
例如:
; /etc/php/8.1/fpm/pool.d/www1.conf
listen = 127.0.0.1:9001
; /etc/php/8.1/fpm/pool.d/www2.conf
listen = 127.0.0.1:9002
Nginx:
upstream php_backend {
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
location ~ \.php$ {
fastcgi_pass php_backend;
}
upstream php_cluster {
server 10.0.0.1:9000;
server 10.0.0.2:9000;
server 10.0.0.3:9000;
}
⚠️ 注意:
0.0.0.0 或内网 IPPHP-FPM 天然多进程,一个请求一个进程:
pm.max_children 至少 ≥ 8查看 CPU:
nproc
pm.status_path = /status
Nginx:
location = /status {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
include fastcgi_params;
}
访问:
http://your_ip/status
能看到:
✅ 使用 Unix Socket(比 TCP 快)
listen = /run/php/php8.1-fpm.sock
✅ 合理设置 request_terminate_timeout
✅ 用 OPcache
✅ 高负载时:
pm.max_requestsPHP-FPM 的“负载”= 进程池配置 + Nginx 分发 + 资源监控
如果你愿意,可以告诉我:
我可以直接帮你算一套 生产级 php-fpm 配置。