Direktori Artikel
一台服务器能撑起多少并发,不在于它有多少核,而在于每个进程到底吃掉了多少内存。
这句话听起来像挑衅,但却是运维圈里最真实的血泪经验。
为什么内存才是关键瓶颈
很多人看到 8 核 CPU、24GB 内存的 VPS,就下意识觉得可以随便开几百个 PHP-FPM 进程。
然而,实际情况往往是:单个 PHP 进程的 RSS 内存占用高达 200MB.
这是通过命令行实测得出的结果:
ps --no-headers -o rss -p $(pgrep php-fpm) | awk '{sum+=$1} END {print sum/NR/1024 " MB"}'
在HestiaCP的复杂框架、多插件环境下,尤其是没有优化 OPcache 的情况下,200MB 是常态。
这意味着,内存才是决定最大并发的硬限制,而不是 CPU。

推荐配置文件(php-fpm.conf)
pm = dynamic
pm.max_children = 80
pm.start_servers = 16
pm.min_spare_servers = 8
pm.max_spare_servers = 24
pm.max_requests = 500
pm.process_idle_timeout = 10s
request_terminate_timeout = 60s
参数计算逻辑与设置依据
| Parameter konfigurasi | 设定值 | 核心计算与设置依据 |
|---|---|---|
| pm | dynamic | 动态模式,根据并发需求弹性增删进程,兼顾响应速度与内存利用率。 |
| pm.max_children | 80 | 24GB 总内存扣除系统内核及 MySQL/Redis/Nginx 后,留给 PHP 约 16GB。16,384 MB / 200 MB ≈ 81.9,设为 80 可彻底杜绝高并发时的 OOM。 |
| pm.start_servers | 16 | 启动时预热,设置为 CPU 核心数的 2 倍(8 核 × 2 = 16),保证服务重启后能瞬间应对基础并发。 |
| pm.min_spare_servers | 8 | 设置为 CPU 核心数(8 核),保证低流量阶段随时响应新请求。 |
| pm.max_spare_servers | 24 | 设置为 CPU 核心数的 3 倍(8 核 × 3 = 24),流量退去后保留适度进程,应对平缓波动。 |
| pm.max_requests | 500 | 单个进程达到 200MB 基数较大,调低至 500 次请求即销毁重建,能更快清理隐式内存泄漏。 |
| pm.process_idle_timeout | 10s | 超出 min_spare_servers 的空闲进程在 10 秒无请求后主动释放,归还系统内存。 |
必备配套设置与调优建议
1. 超时防挂死机制
request_terminate_timeout = 60s 是关键。
它能强制终止因数据库死锁或第三方 API 阻塞导致的卡死进程。
同时,Nginx 的 fastcgi_read_timeout 必须保持在 60s 以上,否则客户端会提前收到 504 Gateway Timeout.
2. 突破内存瓶颈的策略
80 个最大并发进程意味着在极端并发下系统最多同时处理 80 个动态 HTTP 请求。
如果想继续提升承载力,重点应放在降低单进程内存。
- Aktifkan OPcache: 30 menit
php.iniKonfigurasi sedangopcache.enable=1danopcache.memory_consumption=256,字节码缓存能让单进程内存从 200MB 压降至 60~100MB。 - 合理控制 memory_limit:Akan
php.initengahmemory_limit限制在128M或256M,防止个别异常脚本tak terbatas吞噬内存。
一旦单进程内存降至 100MB,pm.max_children 就能安全提升至 150 以上,并发能力几乎翻倍。
Pandangan-pandangan otoritatif yang dikutip
Menurut Nginx 官方文档的建议:
“FastCGI applications should always be monitored with timeout directives to prevent resource exhaustion.”
(来源:Nginx Docs)
而 Manual Resmi PHP明确指出:
“pm.max_children defines the maximum number of child processes to be created. This is the most important directive.”
(来源:PHP-FPM Documentation
这些权威观点与我们的实践完全吻合,证明调优逻辑不仅是经验,更是标准化的最佳实践。
Kesimpulan: Pandangan dan Kutipan Utama Saya
在高并发场景下,CPU 是发动机,内存是油箱,PHP-FPM 就是车队调度。
发动机再强,油箱不够大,车队也跑不远。
真正的高手,不是盲目把参数拉满,而是精准计算每个进程的内存占用,做到既不浪费,也不溢出。
调优的本质,是在有限资源里找到最优平衡。
这不仅是技术,更是一种Filsafat.
所以,别再迷信“核数决定一切”,真正决定并发极限的,是你对内存的掌控力。
行动吧,把你的 VPS 调优到极致,让每一滴内存都物尽其用。
Harapan Chen Weiliang Blog ( https://www.chenweiliang.com/ ) 分享的《8核24G VPS爆内存?HestiaCP下PHP-FPM进程池极致调优实战》,对您有帮助。
Silakan bagikan tautan artikel ini: https://www.chenweiliang.com/cwl-34509.html
