在 Ubuntu 上优化 PHP 性能,通常要从 PHP 版本、PHP-FPM 配置、OPcache、代码层面、系统资源 几个方面入手。下面是一套比较实用、可落地的调优方案(以 PHP-FPM + Nginx 常见环境为例)。
✅ 优先使用 PHP 8.1 / 8.2 / 8.3
php -v
如需升级:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2-fpm php8.2-cli
Nginx + PHP-FPM 是性能最优组合。
确认:
systemctl status php8.2-fpm
配置文件位置:
/etc/php/8.2/fpm/pool.d/www.conf
推荐:
pm = dynamic
公式参考:
max children ≈ 服务器内存 / 单个PHP进程内存
示例(4G 内存):
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
高并发 API 服务:
pm = static
pm.max_children = 100
⚠️ 不要盲目调大,会 OOM
sudo apt install php8.2-opcache
/etc/php/8.2/fpm/php.ini
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=0 ; 生产环境
opcache.jit_buffer_size=100M
opcache.jit=1255
validate_timestamps=0上线后改代码要重启 PHP-FPM
查看已加载模块:
php -m
常见可关:
xdebug(生产必须关)profilersudo phpdismod xdebug
php.ini:
memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 20M
post_max_size = 20M
expose_php = Off
默认文件慢,可换 Redis:
sudo apt install redis-server php8.2-redis
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_read_timeout 60;
启用:
gzip on;
swappinessecho 10 | sudo tee /proc/sys/vm/swappiness
htop 观察 PHP-FPM 内存ab -n 1000 -c 100 http://localhost/
或:
wrk -t4 -c100 -d30s http://localhost/
如果你愿意,可以告诉我:
我可以给你一套 精确配置参数。