在 Ubuntu 上,PHP 一般是通过 PHP‑FPM(FastCGI Process Manager) 运行的,而 PHP‑FPM 并不是“线程”模型,而是“进程 + 子进程(worker)”模型。所以你说的“调线程”,实际通常是调整 PHP‑FPM 的进程数 / 子进程数。
下面按常见场景说明。
先确认 PHP 版本(以 8.1 为例):
php -v
配置文件一般在:
/etc/php/8.1/fpm/pool.d/www.conf
(如果是 7.4,就是 /etc/php/7.4/fpm/pool.d/www.conf)
编辑:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
pm = dynamic
常见三种:
| 模式 | 说明 |
|---|---|
static |
固定进程数(性能最好,内存占用高) |
dynamic |
动态进程(最常用) |
ondemand |
按需启动(省内存,响应慢) |
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
含义:
✅ 经验公式(粗略):
max_children ≈ 可用内存 / 单个 PHP 进程内存
例如:
max_children ≈ 40~50pm = static
pm.max_children = 100
适合:
request_terminate_timeout = 30s
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm-slow.log
防止:
sudo systemctl restart php8.1-fpm
查看状态:
systemctl status php8.1-fpm
ps aux | grep php-fpm
或:
top -u www-data
❌ PHP‑FPM 没有“线程数”
✅ 调的是 进程数(workers)
❌ 调 nginx worker_threads 不等于 PHP 并发
✅ PHP 并发由 pm.max_children 决定
你可以告诉我:
我可以直接给你一套 推荐配置。