温馨提示×

centos中php性能如何监控

小樊
38
2025-12-09 12:21:24
栏目: 编程语言

CentOS 下 PHP 性能监控实操指南

一 监控体系与分层

  • 系统层:CPU、内存、I/O、网络与连接数,用于判断是否为资源瓶颈。
  • 服务层:PHP-FPM(进程池、队列、慢请求)、Nginx/Apache(吞吐、状态码、连接)。
  • 应用层:错误与慢日志、数据库慢查询、关键业务指标(如接口耗时 P95/P99)。
  • APM 与可视化:如 New Relic/DatadogPrometheus + Grafana,用于长期观测与告警。

二 快速上手命令与日志

  • 进程与资源
    • 实时查看:top/htop(按 CPU%/MEM% 排序,关注 php-fpm 进程)。
    • 进程快照:ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | grep php-fpm
    • 连接与端口:ss -lntp | grep :9000(PHP-FPM 默认 9000 端口,若使用 socket 则查对应 socket 文件)。
  • PHP-FPM 状态与日志
    • 服务状态:systemctl status php-fpm;日志路径常见为 /var/log/php-fpm/(如 error.log)。
    • 若需 PHP-FPM 状态页(便于采集队列与进程指标),在 /etc/php-fpm.d/www.conf 中启用:
      • 打开:pm.status_path = /status
      • 访问控制:在对应 Nginx/Apache 配置中仅允许内网访问 /status
    • 访问示例:curl http://127.0.0.1/status?json(JSON 输出便于采集)。
  • Web 与数据库
    • Web 访问日志:如 /var/log/nginx/access.log,可用 goaccess 生成可视化报告。
    • MySQL 慢查询:开启 slow_query_log,定位执行时间长的 SQL

三 关键指标与采集方法

层级 指标 采集方式 说明
系统 CPU、内存、I/O、网络 top/htop、vmstat、iostat、sar 判断是否资源瓶颈
PHP-FPM 进程数、空闲/忙碌、排队、慢请求 状态页 /status?json、日志 /var/log/php-fpm/ 观察 queue、slow requests
Nginx 请求吞吐、状态码分布、连接 access.log、stub_status 结合 P95/P99 响应时间
应用 错误与慢日志 PHP-FPM 日志、应用日志 快速定位异常与慢点
数据库 慢查询 MySQL slow_query_log 优化 SQL 与索引
APM 调用图、事务耗时、外部依赖 New Relic/Datadog/Prometheus Exporter 长期观测与告警
  • 建议采集频率:系统与应用指标 15s,日志与 APM 60s 或按事件采样。

四 可视化与告警搭建

  • Prometheus + Grafana
    • 部署 PrometheusGrafana,在 Grafana 中添加 Prometheus 数据源。
    • 采集 PHP-FPM 状态页(建议启用 /status?json)与 Nginx stub_status,配置 scrape_interval: 15s
    • 导入社区仪表盘(如 PHP-FPM、Nginx、Node/System),设置阈值告警(如 queue > 105xx > 1%)。
  • 商业 APM
    • New Relic:安装 PHP Agent(如 pecl install newrelic),在 php.ini 配置 newrelic.appnamenewrelic.license_key,即可获取函数级调用图与事务追踪。
    • Datadog:安装 Datadog Agent 并启用 PHP 集成,收集 APM、日志与基础设施 指标。

五 性能分析与定位工具

  • 开发/测试环境
    • Xdebug:生成 trace/callgraph,配合 KCacheGrind/Webgrind 分析函数调用与耗时,适合深度定位瓶颈(开销较大,不建议长期开启于生产)。
    • XHProf:轻量级剖析,记录 函数调用次数、CPU、内存,便于对比优化前后差异。
  • 生产友好
    • Blackfire.io:低开销采样分析,提供 调用图瓶颈定位,适合在接近生产的灰度环境持续使用。

0