Ubuntu 下 PHP-FPM 卡顿通常不是单一原因,而是 配置、资源、代码、系统 多个层面叠加。下面按最常见 → 较少见的顺序给你一个系统排查思路,基本能定位 90% 的问题。
ps aux | grep 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
✅ 推荐估算:
max_children ≈ 可用内存 / 单个 php-fpm 进程内存
top
htop
如果:
✅ 建议:
slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 5s
Waiting for querymysqladmin processlist
✅ 常见原因:
free -h
dmesg | grep -i oom
✅ 解决:
pm.max_childrenpm = ondemand(内存敏感)top
iostat -x 1
✅ 常见原因:
✅ 优化:
fastcgi_pass unix:/run/php/php-fpm.sock;
✅ 常见问题:
listen.backlog = 511
✅ 排查
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
✅ 解决:
✅ 检查
php -v
php -m
✅ 建议:
opcache.enable=1
opcache.memory_consumption=128
✅ 按顺序执行:
top → php-fpm 是否吃满 CPU / 内存free -h → 内存是否不足php-fpm slow log → 是否有慢请求nginx access log → 并发是否异常pm.max_children 是否合理你可以直接贴这几样(脱敏即可):
www.conf 的 pm 配置top 截图我可以 直接帮你算一个最优 PHP-FPM 配置,而不是泛泛而谈。