在 Ubuntu 上优化 PHP-FPM 速度,通常从 配置调优、系统资源、OPcache、慢脚本、Web 服务器配合 几个方面入手。下面给你一套实用方案(从最有用到进阶)。
PHP 执行慢,90% 是因为没开 OPcache。
sudo apt install php-opcache
sudo nano /etc/php/8.1/fpm/php.ini
建议配置:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=0 ; 生产环境建议 0
开发环境可保留
validate_timestamps=1
重启:
sudo systemctl restart php8.1-fpm
配置文件:
/etc/php/8.1/fpm/pool.d/www.conf
pm = static
pm.max_children = 100
pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.max_requests = 500
listen = /run/php/php8.1-fpm.sock
Nginx 中对应:
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
重启:
sudo systemctl restart php8.1-fpm
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 2s
查看慢脚本:
tail -f /var/log/php-fpm/slow.log
disable_functions = exec,passthru,shell_exec,system
sudo nano /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
sudo sysctl -w net.core.somaxconn=65535
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_read_timeout 60;
❌ 没开 OPcache
❌ pm 用 default(通常太小)
❌ TCP 而不是 socket
❌ 慢 SQL / 外部 API 阻塞
❌ 内存不足导致 swap
php -m | grep opcache
ps aux | grep php-fpm
htop
如果你愿意,可以告诉我:
我可以给你一套精确参数模板。