ThinkPHP Linux性能监控怎么做
导读:总体思路 面向 ThinkPHP 在 Linux 上的性能监控,建议采用“三层联动”: 应用层:在框架内埋点记录请求耗时、SQL、内存峰值、异常等。 系统层:用 Linux 命令与工具持续观测CPU、内存、磁盘 I/O、网络等。 平台层:...
总体思路 面向 ThinkPHP 在 Linux 上的性能监控,建议采用“三层联动”:
- 应用层:在框架内埋点记录请求耗时、SQL、内存峰值、异常等。
- 系统层:用 Linux 命令与工具持续观测CPU、内存、磁盘 I/O、网络等。
- 平台层:接入Prometheus + Grafana 或 Datadog 做可视化与告警,形成长期趋势与阈值预警。
应用层监控
- 中间件埋点记录请求耗时与路径(适用于 TP5/6,TP3 亦可改造类似中间件)
新建中间件 app/middleware/PerformanceLogger.php:
在全局中间件或模块中间件中注册即可生效。日志建议按天切割并配置异步写入,避免影响请求时延。namespace app\middleware; use think\facade\Request; use think\facade\Log; class PerformanceLogger { public function handle($request, \Closure $next) { $start = microtime(true); $response = $next($request); $duration = (microtime(true) - $start) * 1000; // ms Log::info('perf', [ 'method' => $request-> method(), 'url' => $request-> url(true), 'ip' => $request-> ip(), 'ms' => round($duration, 2), 'mem' => memory_get_peak_usage(true), ]); return $response; } } - 使用 StatsD/Datadog 上报指标
安装客户端:composer require datadog/php-datadogstatsd
配置与打点示例:
需确保本机或内网可达 Datadog Agent(UDP 8125),或在代码中改为你的 Agent 地址。// config/datadog.php return [ 'host' => '127.0.0.1', 'port' => 8125, 'namespace' => 'my_tp_app', 'tags' => ['env:production','app:tp'], ]; // 在控制器或服务中 $statsd = new \DataDog\DogStatsd(config('datadog')); $statsd-> timing('tp.request', $durationMs, ['route'=> $route]); $statsd-> increment('tp.request.count', 1, ['method'=> $method]); - 利用框架自带调试能力(仅开发/预发)
- 开启 app_debug 可在页面底部看到调试面板(含 SQL、加载时间等),便于定位问题。
- ThinkPHP 3.2 可在公共入口记录开始时间 $GLOBALS[‘_beginTime’],在页面或公共函数输出“耗时:x.x s”,用于快速验证。生产环境请勿开启调试面板。
系统层监控
- 实时与轻量排查
- CPU/内存:top、htop、mpstat -P ALL 1、free -h
- 磁盘:df -h、iostat -x 1 3、dstat、iotop
- 网络:ss -tulnp、iftop、nload、netstat -s、tcpdump -i eth0 port 80
- 历史与趋势
- sar -u 1 3(CPU)、sar -r 1 3(内存)、sar -b 1 3(I/O)查看历史统计,配合 sysstat 包使用。
- 进程与内核细节
- atop(按日记录进程活动、资源高亮)、slabtop(内核 slab 缓存)、lsof(打开文件/连接)、sysdig(系统调用与事件追踪,如 sysdig proc.name=php-fpm)。
平台化监控与告警
- Prometheus + Grafana(自建,适合团队与多机)
- 以 php-fpm 状态页 或 Nginx 日志 为数据源,采集请求耗时、吞吐、5xx 错误率、慢查询等;Grafana 配置阈值与面板,Prometheus Alertmanager 负责告警(如 P95 响应时间 > 阈值、错误率飙升)。
- Datadog / New Relic / AppDynamics(SaaS,接入快)
- 安装对应 Agent,在应用内使用 StatsD/DogStatsd 或 APM 探针上报指标与链路,开箱即用仪表盘与告警策略。
- 日志聚合与检索
- 将 ThinkPHP 日志接入 ELK/EFK 或 Loki,用慢请求阈值、异常堆栈、SQL 慢日志建立检索与可视化,便于回溯与审计。
落地步骤与阈值建议
- 第一步:在入口或中间件埋点,输出“请求耗时、内存峰值、状态码、route、method”到本地日志,验证格式与性能开销(建议采样或异步写入)。
- 第二步:部署 Datadog Agent 或 Prometheus Exporter,打通应用指标上报;Grafana 建立“TP 总览”与“接口 P95/P99”面板。
- 第三步:配置告警规则(示例)
- 应用:P95 响应时间 > 500ms(持续 5 分钟)、5xx 错误率 > 1%、单接口 95 分位 > 1s
- 系统:CPU 使用率 > 80%(持续 10 分钟)、可用内存 < 10%、磁盘 %util > 90%、TCP 重传率异常
- 第四步:压测与容量评估(JMeter/ab),在峰值流量下校准阈值与扩容策略;将慢 SQL、外部依赖耗时纳入看板,形成“代码—SQL—系统—平台”的闭环优化。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ThinkPHP Linux性能监控怎么做
本文地址: https://pptw.com/jishu/789311.html
