温馨提示×

PHP在Debian中如何监控

小樊
31
2025-12-30 16:27:11
栏目: 编程语言

在 Debian 上监控 PHP 的实用方案

一 快速排障与系统层面监控

  • 进程与服务状态
    • 查看与重启服务:systemctl status/restart php-fpm(以及 nginx/mysql)。
    • 实时资源与进程:top/htop(定位高 CPU/内存的 PHP-FPM 工作进程)、ps aux | grep php(列出所有 PHP 进程)、systemd-cgtop(按 cgroup 查看资源,适合 PHP-FPM 进程池)。
  • 资源与 I/O
    • 综合资源:vmstat 1iostat -x 1netstat/ss -sfree -mdf -huptime(负载)。
  • 日志
    • Web 服务器:/var/log/nginx/access.log/var/log/nginx/error.log
    • PHP-FPM:常见路径 /var/log/php-fpm.log/var/log/php-fpm/error.log;也可在 php.inierror_log 指令查看配置。
    • 实时查看:tail -f /var/log/nginx/error.log /var/log/php-fpm.log*。

二 PHP-FPM 专项监控

  • 启用状态页
    • 编辑 PHP-FPM 池配置(常见路径:/etc/php/8.0/fpm/pool.d/www.conf/etc/php-fpm.d/www.conf),开启:
      • pm.status_path = /php_status
      • 访问控制(示例):allow 127.0.0.1; deny all;(Nginx 侧配置)
    • 重载:systemctl reload php-fpm
    • 访问示例:curl http://127.0.0.1/php_status(可配合 ?json 获取结构化数据)
  • 关键指标
    • 进程管理:pool、process manager、start time、start since
    • 运行时:accepted conn、listen queue、max listen queue、listen queue len
    • 性能:slow requests、total processes、idle processes、active processes
  • 可视化与告警
    • /php_status 接入 Prometheus(文本采集器或 nginx_exporter),在 Grafana 展示队列、进程占用、慢请求趋势并设置阈值告警。

三 代码级与应用性能监控

  • 性能分析
    • Xdebug:生成函数级调用图与耗时,配合 Webgrind/KCacheGrind 分析。
    • Blackfire:面向生产的低开销性能剖析与瓶颈定位。
    • XHprof:轻量级采样分析,适合在 Debian 上快速接入与对比优化前后差异。
  • APM 与观测
    • New Relic、Datadog APM:请求链路、数据库/外部调用、错误与吞吐,支持 PHP-FPM 与主流框架。
  • 压力与容量
    • ApacheBench(ab):基础吞吐与并发测试;JMeter:多协议、场景化压测。

四 日志聚合与可视化平台

  • 实时与轻量
    • Netdata:开箱即用的实时仪表盘,访问 http://服务器IP:19999
    • Glances:跨平台监控,支持 Web/终端。
  • 进程保活与自愈
    • Supervisor:将 php-fpm 等纳入管理,异常自动重启;示例配置可将 php-fpm 前台运行并受控于 Supervisor(注意与系统服务管理的取舍)。
  • 企业级与可观测性
    • Nagios/Zabbix:主机/服务/进程监控与阈值告警。
    • Prometheus + Grafana:时序指标采集与可视化,适合 PHP-FPM 状态页Nginx 指标与系统资源的统一观测。

五 落地检查清单与告警阈值建议

  • 日常巡检
    • 服务健康:systemctl is-active php-fpm && systemctl is-active nginx
    • 资源异常:top/htop 观察是否有 PHP-FPM 进程长期占用过高 CPU/内存
    • 队列与慢请求:状态页 listen queue > 0slow requests 持续增长需优先排查
    • 错误日志:tail -f /var/log/php-fpm.log /var/log/nginx/error.log* 关注 Fatal/Parse/Timeout
  • 建议阈值(按业务调整)
    • listen queue > 10(或接近 listen queue len)触发扩容或优化
    • slow requests 持续增长或突增
    • active processes ≈ pm.max_childrenidle processes 接近 0
    • 平均响应时间 明显上升或 吞吐(RPS) 下降
    • 内存使用率 > 80%磁盘剩余 < 20%
  • 优化方向
    • 启用并调优 OPcache,减少文件重复编译开销
    • 合理使用 Redis/Memcached 降低数据库压力
    • 数据库索引与查询优化,减少 N+1 与慢查询
    • 结合 Xdebug/Blackfire/XHprof 定位热点函数与 I/O 瓶颈

0