在 Ubuntu 上 php-fpm 崩溃(或频繁退出/重启) 通常并不是 PHP 本身“随机崩”,而是资源、配置或代码问题触发了保护机制。下面按最常见 → 较少见帮你梳理原因和排查方法。
这是 Ubuntu 上 php-fpm 最常见崩溃原因。
表现:
/var/log/syslog 里有:Out of memory: Kill process (php-fpm) score
原因:
php.ini 中 memory_limit 太大pm.max_children 太多✅ 检查:
free -h
dmesg | grep -i oom
✅ 解决:
pm.max_childrenmemory_limit修改过配置后直接挂。
典型错误:
pm 写错user/group 不存在✅ 检查:
sudo php-fpm8.1 -t
sudo journalctl -u php8.1-fpm
✅ 常见配置示例(安全):
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 8
php-fpm 的 worker 崩 ≠ master 崩。
表现:
✅ 查看:
tail -f /var/log/php8.1-fpm.log
tail -f /var/log/nginx/error.log
✅ 常见:
nginx 无法连 php-fpm:
connect() to unix:/run/php/php8.1-fpm.sock failed (13: Permission denied)
✅ 解决:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
✅ 检查:
ls /etc/php/
systemctl list-units | grep fpm
表现:
SIGSEGV
✅ 排查:
df -h
日志写不进去 → fpm 异常
# 1. 配置是否正确
php-fpm8.1 -t
# 2. 看崩溃日志
journalctl -u php8.1-fpm -n 50
# 3. 看内存
free -h
dmesg | grep oom
# 4. 看 PHP 错误
tail -n 100 /var/log/php8.1-fpm.log
你可以直接贴:
php-fpm.conf 或 www.conf 相关配置我可以直接帮你算该设多少 pm.max_children,或者判断是不是 OOM。