Ubuntu 上 php-fpm 崩溃(crash / 退出 / 不响应) 是很常见的问题,原因通常集中在资源、配置、扩展、权限这几类。下面按「最常见 → 较少见」给你系统梳理,并给出排查方法。
php-fpm 被系统 OOM Killer 杀掉。
表现
/var/log/syslog 或 dmesg 中有 Out of memory排查
dmesg | grep -i kill
free -h
解决
pm.max_childrenmemory_limit尤其是 pm = dynamic 或 static 设置错误。
典型问题
pm.max_children 太大 → 内存爆pm.max_children 太小 → 请求排队 → 502关键配置
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
表现
排查
tail -f /var/log/php*-fpm.log
排查
php -m
php-fpm -t
Nginx 无法访问 php-fpm socket。
错误示例
connect() to unix:/run/php/php8.1-fpm.sock failed (13: Permission denied)
解决
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
user = www-data
group = www-data
如果 user 被改错,php-fpm 会直接退出。
Ubuntu 使用 systemd 管理 php-fpm。
查看状态
systemctl status php8.1-fpm
journalctl -u php8.1-fpm
可能原因:
TasksMax 限制MemoryMax 限制ulimit -n
php-fpm 高并发时容易 fd 耗尽。
解决
; php-fpm.conf
rlimit_files = 65535
/var/log/php8.1-fpm.log
/var/log/nginx/error.log
/var/log/syslog
journalctl -xe
php-fpm -t 配置无误pm.max_children 是否合理如果你愿意,可以把下面信息发我,我能精准判断原因:
php-fpm.conf 或 pool 配置我可以直接帮你改配置。