首页主机资讯Ubuntu下php-fpm故障排查步骤

Ubuntu下php-fpm故障排查步骤

时间2025-11-27 17:43:04发布访客分类主机资讯浏览1364
导读:Ubuntu 下 PHP-FPM 故障排查步骤 一 快速定位服务状态与日志 确认服务是否运行(将版本号替换为你的实际版本,如 7.4、8.1、8.2、8.3): 查看状态:sudo systemctl status php7.4-fpm...

Ubuntu 下 PHP-FPM 故障排查步骤

一 快速定位服务状态与日志

  • 确认服务是否运行(将版本号替换为你的实际版本,如 7.4、8.1、8.2、8.3):
    • 查看状态:sudo systemctl status php7.4-fpm
    • 启动/重启/开机自启:sudo systemctl start|restart|enable php7.4-fpm
  • 查看系统日志与 FPM 日志:
    • 系统日志:sudo journalctl -xeu php7.4-fpm
    • FPM 错误日志:常见路径为 /var/log/php7.4-fpm.log/var/log/php-fpm.log,实时查看:sudo tail -f /var/log/php7.4-fpm.log
  • 若服务反复崩溃或卡死,可跟踪进程:
    • 跟踪:sudo strace -f -ff -t -d -p $(pidof php7.4-fpm) 以上步骤可快速判断服务是否存活、为何失败以及失败前的系统调用轨迹。

二 核对配置与监听是否正确

  • 主配置与进程池配置路径(按版本调整):
    • 主配置:/etc/php/7.4/fpm/php-fpm.conf
    • 进程池:/etc/php/7.4/fpm/pool.d/www.conf
  • 重点检查项:
    • listen:确保与 Web 服务器一致,常见为 127.0.0.1:9000(TCP)或 /run/php/php7.4-fpm.sock(Unix 套接字)
    • 进程池必须存在:若 /etc/php/7.4/fpm/pool.d/ 下没有 .conf,FPM 会报 “No pool defined” 且无法启动;可从 www.conf.default 复制为 www.conf 后再启动
    • 资源与上限:如 pm.max_children、pm.start_servers、pm.max_requests 等,避免资源耗尽或不合理回收
  • 修改后先语法检查再重启:
    • 语法检查:sudo php-fpm7.4 -t
    • 重启:sudo systemctl restart php7.4-fpm 这些检查能排除最常见的配置错误与进程池缺失问题。

三 排查网络与权限问题

  • 监听与连通性:
    • 套接字是否存在且权限正确:ls -l /run/php/php7.4-fpm.sock
    • 端口是否被占用(若使用 TCP):ss -lntp | grep 9000netstat -tulpen | grep 9000
  • 与 Web 服务器对接核对:
    • Nginx 示例:fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_pass 127.0.0.1:9000;
    • Apache 示例:ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
  • 常见权限报错与处理:
    • 若出现 “connect() to unix:/run/php/php7.4-fpm.sock failed (13: Permission denied)”,可在 www.conf 中调整:
      • 临时方案(开发环境):listen.owner = www-data、listen.group = www-data、listen.mode = 0666
      • 生产环境建议保持 0660 并通过 systemdRuntimeDirectory=phpGroup=www-data 正确设置套接字属主与权限
  • 防火墙与端口放行(若走 TCP 9000):
    • UFW:sudo ufw allow 9000sudo ufw allow ‘Apache Full’ 以上步骤可定位套接字/端口连通性、权限与防火墙导致的访问失败。

四 应用与系统层面的常见错误

  • 脚本错误与慢请求定位:
    • 确保 display_errors 在生产关闭、log_errors 开启,并配置 error_log;结合 FPM 日志与浏览器报错定位语法/逻辑问题
    • 慢请求可在 www.conf 开启 slowlogrequest_slowlog_timeout 捕获耗时调用栈
  • 资源与稳定性:
    • 内存/磁盘:free -m、df -h 检查是否因 OOM 或磁盘满导致异常
    • 进程管理参数:根据 pm 策略(static/dynamic/ondemand)与 max_children 评估并发与内存占用,避免 max_requests 过小引发频繁重启
  • 访问状态与健康检查:
    • 若启用 pm.status_path(如 /status),可通过 http://localhost/status 查看 pool、processes、slow requests 等 这些手段有助于从应用与系统资源层面发现间歇性与稳定性问题。

五 一键排查清单与常用命令

  • 快速命令清单(按需替换版本号):
    • 服务状态:systemctl status php7.4-fpm
    • 启动/重启/自启:systemctl start|restart|enable php7.4-fpm
    • 语法检查:php-fpm7.4 -t
    • 日志跟踪:tail -f /var/log/php7.4-fpm.log
    • 套接字与权限:ls -l /run/php/php7.4-fpm.sock
    • 端口占用:ss -lntp | grep 9000
    • 进程跟踪:strace -f -ff -t -d -p $(pidof php7.4-fpm)
    • 防火墙放行:ufw allow 9000ufw allow ‘Apache Full’
  • 最小可用配置核对示例(www.conf 片段):
    • listen = /run/php/php7.4-fpm.sock
    • listen.owner = www-data、listen.group = www-data、listen.mode = 0660
    • user = www-data、group = www-data
    • 按需开启:pm.status_path = /statusslowlog = /var/log/php7.4-fpm.slow.log 以上清单覆盖从服务存活、配置语法、权限连通到资源瓶颈的常用检查点。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu下php-fpm故障排查步骤
本文地址: https://pptw.com/jishu/758085.html
php-fpm在Ubuntu中的最佳实践 Ubuntu中php-fpm与Nginx配置示例

游客 回复需填写必要信息