Ubuntu中php-fpm进程管理方法
导读: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-fpm 或 php8.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
