温馨提示×

PHP-FPM在Ubuntu如何加速

小樊
33
2026-08-24 11:18:04
栏目: 编程语言

在 Ubuntu 上优化 PHP-FPM 的性能和速度,通常需要从 配置调优、系统资源、PHP 代码、缓存、Web 服务器协同 等方面入手。下面按实用程度给你一套完整方案。


一、选择并确认 PHP-FPM 使用正确的池(Pool)

查看当前 PHP 版本和 FPM 状态:

php -v
systemctl status php8.2-fpm   # 以 8.2 为例

确认站点使用的是 PHP-FPM 而不是 mod_php(Nginx 必须为 FPM)。


二、核心优化:php-fpm.conf / www.conf

配置文件路径(以 PHP 8.2 为例):

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

1️⃣ 进程管理方式(最重要)

推荐 pm = dynamicpm = ondemand

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

✅ 估算公式(经验值):

pm.max_children ≈ 可用内存(MB) / 每个PHP进程占用内存

查看单个 PHP 进程内存:

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

⚠️ 不要设置过大,否则会 OOM。


2️⃣ 请求超时 & 慢日志

request_terminate_timeout = 30s
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s

用于排查慢 PHP 脚本。


三、PHP 本身加速(非常关键)

1️⃣ 启用 OPcache(必开)

apt install php8.2-opcache

编辑:

/etc/php/8.2/fpm/conf.d/10-opcache.ini

推荐配置:

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=50000
opcache.validate_timestamps=0   # 生产环境
opcache.revalidate_freq=0

✅ 性能提升 30%~300%


2️⃣ 关闭不必要的扩展

php -m

禁用不用的扩展(如 sqlite、pdo_dblib 等)。


四、Nginx + PHP-FPM 协同优化

1️⃣ Nginx 配置

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;

    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;
    fastcgi_read_timeout 30;
}

2️⃣ 使用 Unix Socket(比 TCP 快)

listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data

五、系统层面加速

1️⃣ 文件描述符限制

ulimit -n

如过低,修改:

/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

2️⃣ 禁用 swap(服务器)

swapoff -a

或降低 swappiness:

sysctl vm.swappiness=10

六、使用缓存(进阶)

1️⃣ Redis / Memcached

apt install redis-server php8.2-redis

用于:

  • 会话
  • 数据库查询缓存
  • 页面缓存

2️⃣ 页面级缓存(Nginx)

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=phpcache:100m inactive=60m;

七、数据库相关(常被忽略)

✅ 使用 持久连接(PDO)
✅ 给常用查询加索引
✅ 避免 SELECT *


八、重启生效

systemctl restart php8.2-fpm
systemctl restart nginx

九、推荐“安全 + 高性能”组合(生产环境)

项目 推荐
PHP 8.2 / 8.3
进程管理 dynamic
OPcache ✅ 开启
缓存 Redis
Web 服务器 Nginx
静态资源 Nginx 直接处理

十、性能测试

ab -n 1000 -c 50 https://example.com/

或:

wrk -t4 -c100 -d30s https://example.com/

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

  • ✅ Ubuntu 版本
  • ✅ PHP 版本
  • ✅ 内存 / CPU
  • ✅ 使用的是 Laravel / WordPress / 自研框架

我可以给你 一份完全定制的 php-fpm 配置

0