1. pm
(进程管理方式)
定义了 PHP-FPM 如何管理进程池的进程数量。
- 可选值:
static
(静态模式):固定数量的进程,pm.max_children
决定了有多少个进程。- 每次都会启动固定数量的 PHP 进程。
- 适合高并发、且负载稳定的环境。
dynamic
(动态模式):根据请求动态调整进程数量。- 需要配置最小进程数、最大进程数等参数。
- 适合负载波动较大的环境。
ondemand
(按需模式):只有请求时才启动进程。- 空闲时没有进程存在,非常节省资源。
- 适合低负载、偶尔请求的场景。
2. pm.max_children(
表示最多可以同时运行的 PHP 进程数量)
- 定义:
- 表示 PHP-FPM 在静态模式或动态模式下,同时可以处理的最大并发请求数。
- 每个请求需要占用一个进程,超过这个数量的请求会被挂起,直到有进程可用。
- 配置建议:
- 根据服务器内存、PHP 脚本的复杂度计算。
- 经验公式:
max_children = (可用内存) / (每个 PHP 进程的内存占用)
- 例如:假设服务器有 4GB 可用内存,每个 PHP 进程约占用 30MB,则最大值为:
4096 MB / 30 MB ≈ 136
- 例如:假设服务器有 4GB 可用内存,每个 PHP 进程约占用 30MB,则最大值为:
- 注意:
pm.max_children
配置得太高可能会导致内存不足。
3. pm.start_servers
- 定义:
- 动态模式下,FPM 启动时创建的进程数量。
- 默认值:
- 通常建议设置为
pm.min_spare_servers
和pm.max_spare_servers
的中间值。
- 通常建议设置为
- 配置建议:
- 在负载高峰期频繁重启 PHP-FPM 时,可以适当调高这个值。(start_servers = (min_spare_servers + max_spare_servers) / 2)
4. pm.max_requests
- 定义:
- 每个 PHP-FPM 进程在处理了多少个请求后会被回收重启。
- 设置此值可以避免 PHP 脚本中的内存泄漏问题。
- 默认值:
0
(不限制) - 配置建议:
- 建议设置为非 0 的适中值(如
500
或1000
)。 - 数值过小会增加进程重启的频率,影响性能;数值过大可能会积累内存问题。
- 建议设置为非 0 的适中值(如