温馨提示×

CentOS怎么配置PHP并发

小樊
45
2026-07-19 11:16:36
栏目: 编程语言

在 CentOS 上配置 PHP 并发能力,主要取决于你使用的是哪种 PHP 运行模式。最常见的是 PHP-FPM(推荐),下面是完整且实用的配置思路。


一、先确认 PHP 运行模式

大多数现代 CentOS 服务器使用的是 PHP-FPM + Nginx/Apache

php -v
ps -ef | grep php-fpm

如果看到 php-fpm 进程,说明是 PHP-FPM。


二、PHP-FPM 并发核心配置(重点)

PHP-FPM 的并发能力由 进程管理方式(pm) 决定。

1️⃣ PHP-FPM 配置文件位置

常见路径(以 PHP 7.4 为例):

/etc/php-fpm.d/www.conf

或:

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

2️⃣ 关键并发参数说明

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

✅ 各参数含义

参数 含义
pm 进程管理方式
pm.max_children 同时处理的最大 PHP 进程数(最重要)
pm.start_servers 启动时的进程数
pm.min_spare_servers 最小空闲进程
pm.max_spare_servers 最大空闲进程
pm.max_requests 每个子进程处理多少请求后重启(防内存泄漏)

3️⃣ 三种 pm 模式对比

模式 适用场景
dynamic 默认推荐,适合大多数网站
static 高并发、稳定流量
ondemand 低流量、节省内存

推荐配置

pm = dynamic

三、如何计算并发能力?(非常重要)

并发公式(经验)

max_children ≈ 可用内存 / 每个 PHP 进程占用内存

查看单 PHP 进程内存

top -p $(pgrep php-fpm | head -1)

或:

ps -ylC php-fpm --sort:rss

假设:

  • 服务器内存 4GB
  • 单个 PHP 进程 40MB
  • 预留系统 1GB
(4096 - 1024) / 40 ≈ 76

✅ 可设置:

pm.max_children = 70

四、Nginx 与 PHP-FPM 的连接并发

Nginx 配置示例

location ~ \.php$ {
    fastcgi_pass   unix:/run/php-fpm/www.sock;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}

✅ 确保 nginx.conf 中:

worker_processes auto;
worker_connections 10240;

五、系统级并发优化(CentOS)

1️⃣ 文件描述符限制

ulimit -n

建议设置:

* soft nofile 65535
* hard nofile 65535

写入:

/etc/security/limits.conf

2️⃣ PHP-FPM systemd 限制

mkdir -p /etc/systemd/system/php-fpm.service.d
# override.conf
[Service]
LimitNOFILE=65535
systemctl daemon-reload
systemctl restart php-fpm

六、验证 PHP-FPM 并发

查看进程数

ps aux | grep php-fpm | wc -l

压力测试(示例)

ab -n 1000 -c 100 http://yourdomain.com/

七、常见错误 & 排查

❌ 502 Bad Gateway

  • pm.max_children 太小
  • PHP-FPM 没启动

❌ 内存爆满

  • max_children 太大

❌ 并发上不去

  • Nginx worker_connections 小
  • 系统 ulimit 限制

八、推荐配置示例(2C4G 服务器)

pm = dynamic
pm.max_children = 60
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

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

  • ✅ CentOS 版本(7/8/Stream)
  • ✅ PHP 版本
  • ✅ 内存 & CPU
  • ✅ Nginx 还是 Apache

我可以帮你 给出一套精确数值的最优配置

0