首页主机资讯Linux环境下ThinkPHP如何监控

Linux环境下ThinkPHP如何监控

时间2025-11-27 02:19:03发布访客分类主机资讯浏览1130
导读:Linux环境下 ThinkPHP 监控实践 一 进程守护与自动重启 使用Supervisor管理常驻进程(如队列、Workerman、Swoole),异常退出可自动拉起,并提供标准化启停与日志能力。 安装与启用(以 CentOS 为例)...

Linux环境下 ThinkPHP 监控实践

一 进程守护与自动重启

  • 使用Supervisor管理常驻进程(如队列、Workerman、Swoole),异常退出可自动拉起,并提供标准化启停与日志能力。
  • 安装与启用(以 CentOS 为例):
    • 安装:yum install -y supervisor
    • 验证:supervisord -v
    • 开机自启:systemctl enable --now supervisord
  • 队列示例(think-queue 常驻监听):
    • 配置文件:/etc/supervisord.d-queue.ini
      [program:think-queue]
      command=/usr/bin/php /data/www queue:listen
      directory=/data/www/your-project
      process_name=%(process_num)02d
      numprocs=2
      autostart=true
      autorestart=true
      startsecs=5
      startretries=5
      redirect_stderr=true
      stdout_logfile=/var/log-queue.out.log
      stderr_logfile=/var/log-queue.err.log
      user=www-data
      
    • 常用命令:
      • 启动/重载:supervisorctl start think-queuesupervisorctl update(热更新配置)
      • 状态/重启:supervisorctl statussupervisorctl restart think-queue
  • 多进程与多端口守护(如 Swoole/Workerman 多端口服务):
    • 通过多 program分别守护不同端口,或用numprocs+process_name扩展多个 worker;必要时在程序内做端口自检与报警(如用 Swoole 定时器探测监听端口存活)。

二 应用性能与业务指标监控

  • APM 与指标上报(生产推荐):
    • 集成Datadog PHP Library(datadog/php-datadogstatsd),在服务启动时绑定 DogStatsd,记录请求耗时、队列处理时长、异常计数等自定义指标,并在控制台进行可视化与告警配置。
    • 快速接入示例:
      • 安装:composer require datadog/php-datadogstatsd
      • 配置:config/datadog.php(设置 agent 地址、端口、命名空间与标签)
      • 使用(在控制器/队列任务中):
        use DataDog\DogStatsd;
            
        $statsd = new DogStatsd(['host'=>
            '127.0.0.1','port'=>
            8125,'namespace'=>
            'tp_app']);
            
        $start = microtime(true);
            
        // ...业务逻辑...
        $statsd->
            timing('tp.request.duration', (microtime(true)-$start)*1000, ['route'=>
            '/index']);
            
        $statsd->
            increment('tp.job.processed', 1, ['queue'=>
            'default']);
            
        
  • 代码级性能剖析(问题定位阶段):
    • 使用XHProf采集函数调用次数、CPU、内存等指标,定位慢函数与热点路径;适合临时开启的深度分析,不建议长期开启以免影响性能。

三 系统资源与健康监控

  • 主机层面建议常驻监控:
    • 资源监控:htop(交互式资源)、vmstatiostatsardstatglances,覆盖CPU、内存、磁盘 I/O、网络等核心指标,便于发现瓶颈与异常抖动。
    • 日志与告警:将 Supervisor 与业务日志接入集中式日志平台(如 ELK/EFK),对进程崩溃、队列积压、异常日志激增设置阈值告警,缩短 MTTR。

四 ThinkPHP 内置能力与开发调试

  • 开发/预发环境建议开启调试面板日志,快速查看请求信息、SQL、耗时等;生产环境关闭调试模式,仅保留必要日志级别与异常记录。
  • 自定义中间件记录请求耗时,便于无侵入地观测接口性能:
    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("Request to ".Request::url()." took ".round($duration,2)."ms");
        
            return $response;
    
        }
    
    }
        
    
  • 异常统一处理:配置exception_handle,在捕获未处理异常时记录堆栈与上下文,并结合告警策略提升可观测性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux环境下ThinkPHP如何监控
本文地址: https://pptw.com/jishu/757409.html
ThinkPHP如何提升开发效率 Linux中ThinkPHP如何备份数据

游客 回复需填写必要信息