在 Ubuntu 上提升 PHP-FPM 并发能力,通常从 PHP-FPM 配置、系统资源、Web 服务器、代码与缓存 几个方面入手。下面按优先级和可操作性给你一套实用方案。
PHP-FPM 的并发能力主要由 进程/线程数 决定。
编辑池配置(通常是):
sudo vim /etc/php/*/fpm/pool.d/www.conf
常见三种模式:
dynamic(最常用)pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
static(高并发、内存充足)pm = static
pm.max_children = 200
ondemand(省内存,但高并发延迟大)pm = ondemand
pm.max_children = 100
max_children ≈ 可用内存 / 单个 PHP 进程内存
查看单进程内存:
ps -ylC php-fpm --sort:rss
示例:
(8G - 2G) / 40MB ≈ 150
✅ 推荐:不要超过内存极限,否则会 swap,性能暴跌
pm.max_requests = 500
防止内存泄漏,定期回收进程。
✅ Unix Socket(推荐,性能更好)
listen = /run/php/php-fpm.sock
Nginx:
fastcgi_pass unix:/run/php/php-fpm.sock;
⚠️ TCP(127.0.0.1:9000)略慢,但方便多机。
worker_processes auto;
worker_connections 10240;
ulimit -n
修改:
sudo vim /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000
PHP-FPM:
rlimit_files = 100000
sudo vim /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
sudo sysctl -p
sudo apt install php-opcache
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 ; 生产环境
减少内存和加载时间。
如果单机已经优化到极限:
✅ Redis / Memcached 缓存 ✅ 静态资源走 CDN ✅ PHP-FPM 多池隔离
[www]
[api]
✅ 负载均衡 + 多台 PHP-FPM
sudo systemctl status php*-fpm
或看:
sudo tail -f /var/log/php*-fpm.log
常见现象:
8G 内存 / Nginx + PHP-FPM
pm = dynamic
pm.max_children = 120
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 60
pm.max_requests = 1000
如果你愿意,可以告诉我:
我可以直接帮你算 最优 PHP-FPM 参数。