首选 dynamic 模式,适用于有波峰波谷的 web 场景;static 仅用于高稳低延、流量可预测场景;ondemand 仅适用于极低频或调试。php 8.2 不改变模式行为,但强化的内存管理使配置偏差影响更显著。

选 PHP-FPM 进程模式,核心不是看 PHP 版本号(比如 8.2),而是看你的业务流量特征、服务器资源和延迟容忍度。PHP 8.2 对三种模式本身没有行为变更,但更严格的内存管理和更快的进程回收会让配置偏差的影响更明显——模式选错,调参再细也难补救。
dynamic(动态模式):大多数 Web 场景的默认答案
适合 CMS、电商前台、用户后台、API 接口层等流量有明显波峰波谷的服务。
- 启动时按 pm.start_servers 预热一批进程,避免首请求冷启动抖动
- 空闲进程数维持在 pm.min_spare_servers 到 pm.max_spare_servers 区间,既防突发又不堆闲置
- pm.max_children 是硬上限,必须 ≥(预估峰值并发 ÷ 单请求平均耗时秒数)× 1.3 安全冗余,否则会直接丢请求
- 对 2 核 4G 的常见 VPS,推荐值:start_servers=4,min_spare_servers=3,max_spare_servers=10,max_children=50
static(静态模式):只给高稳低延场景用
适用于内部网关、定时任务调度器、微服务后端等——流量可预测、CPU/内存充足、不能容忍任何 fork 延迟。
- 所有子进程数固定为 pm.max_children,无创建销毁开销,响应更稳定
- 内存占用恒定,适合容器中配额明确的环境(如 Kubernetes 限制 memory=1Gi)
- 风险高:设高了浪费内存,设低了请求排队超时;慢脚本会卡死全部连接,不建议用于 Nginx 直连的 Web 入口
- 若真要用,先测单进程内存(8.2 下常为 35–50MB),再按公式算:可用内存 × 0.7 ÷ 单进程均值
ondemand(按需模式):极低频或调试专用
仅建议用于日均请求
- 启动零 worker,首个请求才 fork,冷态内存占用最低
- 必须配 pm.process_idle_timeout = 10–30s,否则空闲进程滞留反而更耗内存
- PHP 8.2 中 master 进程 CPU 占用比 8.1 更敏感,频繁请求下易成瓶颈
- 绝对不要用于用户直连入口,也不适合接负载均衡器——连接风暴会压垮 master 调度逻辑
不复杂但容易忽略:模式决定架构底座。先定 pm = dynamic/static/ondemand,再调具体参数。顺序反了,再精细的数值也没用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











