Ubuntu 下 PHP-FPM 响应慢通常不是单一原因,而是 配置、资源、代码、系统环境 叠加的结果。下面按最常见 → 较少见的顺序给你系统性排查思路,并给出可直接操作的优化建议。
top 里 php-fpm 进程很多或很少/etc/php/*/fpm/pool.d/www.conf
重点参数:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
ps aux | grep php-fpm | wc -l
如果接近 pm.max_children → 进程不够
✅ 建议:
pm.max_children 估算公式:max_children ≈ 可用内存 / 单个 php-fpm 进程内存
例如:
php -i | grep opcache
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
✅ 开启后通常 提升 30%~50%
slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 2s
tail -f /var/log/php-fpm/www-slow.log
✅ 如果看到:
那就是 代码问题
top
htop
iotop
free -h
常见问题:
✅ 如果看到 swap 使用:
swapoff -a
ulimit -n
建议:
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
fastcgi_read_timeout 120;
fastcgi_pass unix:/run/php/php-fpm.sock;
php -r "echo 1;" 很快✅ 检查:
select * 大表常见原因:
✅ 检查:
APP_DEBUG=false
例如:
✅ 解决:
✅ 按顺序执行:
# 1. 是否开启 opcache
php -i | grep opcache.enable
# 2. 是否进程不够
ps aux | grep php-fpm | wc -l
# 3. 是否有慢日志
tail /var/log/php-fpm/www-slow.log
# 4. 是否 CPU / IO 爆满
top
你可以直接贴出:
www.conf 配置我可以 直接给你一份优化后的配置,而不是泛泛而谈。