首页主机资讯Ubuntu中php-fpm进程管理方法

Ubuntu中php-fpm进程管理方法

时间2025-11-27 17:48:03发布访客分类主机资讯浏览1141
导读:Ubuntu 中 PHP-FPM 进程管理方法 一 服务生命周期管理 查看服务状态(先确认服务名与版本) 列出可用服务:ls /lib/systemd/system/php*-fpm.service 查看状态:sudo systemct...

Ubuntu 中 PHP-FPM 进程管理方法

一 服务生命周期管理

  • 查看服务状态(先确认服务名与版本)
    • 列出可用服务:ls /lib/systemd/system/php*-fpm.service
    • 查看状态:sudo systemctl status php**{ version} **-fpm
  • 启动、停止、重启、热重载
    • 启动:sudo systemctl start php**{ version} **-fpm
    • 停止:sudo systemctl stop php**{ version} **-fpm
    • 重启:sudo systemctl restart php**{ version} **-fpm
    • 热重载(不中断现有连接,推荐用于应用配置变更):sudo systemctl reload php**{ version} **-fpm
    • 开机自启:sudo systemctl enable php**{ version} **-fpm
  • 兼容旧版 SysV 的写法(如系统仍保留 service 脚本)
    • 重启:sudo service php**{ version} **-fpm restart
    • 热重载:sudo service php**{ version} **-fpm reload
  • 版本号确认
    • 查看已安装版本:php -v
    • 查找服务单元:ls /lib/systemd/system/php*-fpm.service 说明:Ubuntu 16.04+ 默认使用 systemd;服务名通常为 php7.x-fpmphp8.x-fpm。热重载通过发送 USR2 信号实现,适合不中断业务的应用发布场景。

二 配置文件与进程模型

  • 主要配置路径
    • 池配置:/etc/php/{ version} /fpm/pool.d/www.conf
    • 全局配置:/etc/php/{ version} /fpm/php-fpm.conf
    • PHP 运行时配置:/etc/php/{ version} /fpm/php.ini
  • 进程管理策略(pm)
    • static:固定进程数,适合资源可控、负载稳定的场景
    • dynamic:按需伸缩,常用且资源友好
    • ondemand:按需启动,适合低并发或突发流量
  • 常用进程参数(示例为 dynamic)
    • pm.max_children:最大子进程数
    • pm.start_servers:启动时进程数
    • pm.min_spare_servers:最小空闲进程数
    • pm.max_spare_servers:最大空闲进程数
    • pm.max_requests:每个子进程处理一定请求后自动重启,缓解内存泄漏
  • 请求与日志
    • request_terminate_timeout:请求最大执行时间
    • slowlog_timeout:慢请求阈值
    • 建议开启慢日志与错误日志,便于定位性能与异常 修改配置后,使用 sudo systemctl reload php**{ version} **-fpm 使配置生效(生产环境优先热重载)。

三 与 Web 服务器集成

  • Nginx 示例(Unix 套接字)
    • fastcgi_pass unix:/run/php/php**{ version} **-fpm.sock;
    • 确保 Nginx 与 PHP-FPM 使用一致的套接字路径与权限
  • Apache 示例(mod_proxy_fcgi)
    • SetHandler “proxy:unix:/run/php/php**{ version} **-fpm.sock|fcgi://localhost”
  • 变更 Web 服务器或 FPM 监听方式后,需重启对应服务
    • sudo systemctl restart nginx 或 sudo systemctl restart apache2
    • 必要时重载 FPM:sudo systemctl reload php**{ version} **-fpm 以上为常见且安全的集成方式,Unix 套接字通常性能更佳。

四 监控与运维

  • 内置状态页(需配置访问控制)
    • 在 Nginx 中增加 location /phpfpm_status,fastcgi_pass 指向 FPM 监听地址(如 127.0.0.1:9000/run/php/php{ version} -fpm.sock
    • 访问该页面可查看 active processes、idle processes、accepted conn 等关键指标
  • 日志与排查
    • FPM 错误日志:/var/log/php**{ version} **-fpm.log(或按 pool 配置)
    • 动态查看:sudo tail -f /var/log/php**{ version} **-fpm.log
    • PHP 错误日志:由 php.ini 的 error_log 指定
  • 运行时观察
    • 系统资源:top/htop、ps
    • 连接与进程:ss -lntp | grep php;ps aux | grep php-fpm 通过状态页与日志结合监控,可快速定位 502/504、慢请求与进程耗尽等问题。

五 常见问题与快速排障

  • 找不到服务名
    • 执行:ls /lib/systemd/system/php*-fpm.service 与 php -v 确认实际安装版本与服务名
  • 修改配置不生效
    • 确认修改了正确的 { version} pool.d/www.conf
    • 使用:sudo systemctl reload php**{ version} **-fpm(生产优先)或 restart
  • 权限或 502 错误
    • 核对 Nginx 与 FPM 的 套接字路径与权限(如 www-data 用户组)
    • 检查 FPM 错误日志与 Nginx 错误日志的报错行号
  • 进程耗尽或高负载
    • 调整 pm、pm.max_children、pm.start_servers、pm.min/max_spare_servers
    • 开启 slowlog,分析长耗时脚本
  • 平滑升级与回滚
    • 先备份配置与日志
    • 使用 reload 进行滚动生效;必要时快速回滚配置并 restart 以上步骤覆盖了服务识别、配置生效、权限校验与性能瓶颈定位的高频场景。

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


若转载请注明出处: Ubuntu中php-fpm进程管理方法
本文地址: https://pptw.com/jishu/758090.html
Ubuntu Java编译时依赖库如何处理 如何在Ubuntu上使用IDE进行Java编译

游客 回复需填写必要信息