首页主机资讯ThinkPHP Linux性能监控怎么做

ThinkPHP Linux性能监控怎么做

时间2026-01-22 00:41:03发布访客分类主机资讯浏览1188
导读:总体思路 面向 ThinkPHP 在 Linux 上的性能监控,建议采用“三层联动”: 应用层:在框架内埋点记录请求耗时、SQL、内存峰值、异常等。 系统层:用 Linux 命令与工具持续观测CPU、内存、磁盘 I/O、网络等。 平台层:...

总体思路 面向 ThinkPHPLinux 上的性能监控,建议采用“三层联动”:

  • 应用层:在框架内埋点记录请求耗时、SQL、内存峰值、异常等。
  • 系统层:用 Linux 命令与工具持续观测CPU、内存、磁盘 I/O、网络等。
  • 平台层:接入Prometheus + GrafanaDatadog 做可视化与告警,形成长期趋势与阈值预警。

应用层监控

  • 中间件埋点记录请求耗时与路径(适用于 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
    配置与打点示例:
    // 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]);
        
    
    需确保本机或内网可达 Datadog Agent(UDP 8125),或在代码中改为你的 Agent 地址。
  • 利用框架自带调试能力(仅开发/预发)
    • 开启 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/EFKLoki,用慢请求阈值、异常堆栈、SQL 慢日志建立检索与可视化,便于回溯与审计。

落地步骤与阈值建议

  • 第一步:在入口或中间件埋点,输出“请求耗时、内存峰值、状态码、route、method”到本地日志,验证格式与性能开销(建议采样或异步写入)。
  • 第二步:部署 Datadog AgentPrometheus 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
Debian Sniffer能用于教育吗 Linux下ThinkPHP错误处理方法

游客 回复需填写必要信息