温馨提示×

ubuntu php-fpm怎么设置进程数

小樊
34
2026-09-01 11:27:24
栏目: 编程语言

在 Ubuntu 上,php-fpm 的进程数主要通过 www.conf 配置文件中的 pm(进程管理模式)相关参数来设置。下面按常见场景给你说明。


一、找到 php-fpm 配置文件

通常路径(以 PHP 8.1 为例,版本号按需替换):

/etc/php/8.1/fpm/pool.d/www.conf

编辑:

sudo nano /etc/php/8.1/fpm/pool.d/www.conf

修改后重启:

sudo systemctl restart php8.1-fpm

二、进程数核心参数说明

1️⃣ 动态模式(最常用)

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

含义:

  • pm.max_children最大子进程数(最重要)
  • pm.start_servers:启动时的进程数
  • pm.min_spare_servers:最小空闲进程
  • pm.max_spare_servers:最大空闲进程

✅ 适合:流量波动较大的网站


2️⃣ 静态模式(稳定高并发)

pm = static
pm.max_children = 50
  • 一开始就会启动固定数量进程
  • 不动态回收

✅ 适合:高并发、内存充足、CPU 核心多


3️⃣ 按需模式(省内存)

pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 10s
  • 没请求不占用进程
  • 请求来了再起

✅ 适合:低流量 / 内存小的服务器


三、如何合理设置 max_children(重要)

估算公式:

pm.max_children = 可用内存 / 单个 php-fpm 进程内存

例如:

  • 服务器内存:2GB
  • 每个 php-fpm 进程约 40MB
2048 / 40 ≈ 50

⚠️ 不要超过内存,否则会 OOM(卡死 / 重启)

查看进程内存:

ps -ylC php-fpm8.1 --sort:rss

四、查看 & 验证

查看当前进程数:

ps aux | grep php-fpm

查看状态(可选开启):

pm.status_path = /status

五、常见推荐配置(示例)

小型网站(1–2G 内存)

pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10

中大型网站(4G+)

pm = static
pm.max_children = 80

如果你愿意,可以告诉我:

  • PHP 版本
  • 服务器内存
  • 网站类型(WordPress / API / 商城)

我可以直接帮你算一套最优配置

0