Yii模型查询性能监控:慢查询告警【技巧】

风辰君_1039

风辰君_1039

2026-08-08

349人浏览

原创

yii模型查询性能监控需自动发现慢查询并告警,核心是实时接入耗时指标:启用db组件的enableprofiling和enableparamlogging,配置日志target捕获sql,监听event_after_execute事件判断超500ms写警告日志,并集成sentry实现主动告警。

yii模型查询性能监控:慢查询告警【技巧】

Yii模型查询性能监控要能自动发现慢查询并触发告警,不能等用户投诉才去翻日志——关键在于把数据库查询耗时指标实时接入监控链路,同时让慢查询在调试工具栏里一眼可见、在日志里可追溯、在告警系统里可拦截。

启用并验证 Yii 的 SQL 日志与耗时统计

第一步:在 config/web.php 或 config/main.php 的 components 中,确保 log 组件已配置 DbTarget 或 FileTarget,且 categories 包含 'yii\db\Command::query' 和 'yii\db\Command::execute'。

第二步:在 db 组件中开启 enableProfiling 和 enableParamLogging:

'db' => [ 'class' => 'yii\db\Connection', 'enableProfiling' => true, 'enableParamLogging' => true, // 记录绑定参数,便于复现 ... ]

第三步:访问任意页面后,打开调试工具栏 → 点击 “Database” 标签页 → 查看每条 SQL 后面的耗时(单位:ms)。【若此处无耗时数字,说明 enableProfiling 未生效或被 config 覆盖】

自定义慢查询日志拦截器

方法一:重写 yii\db\Connection::createCommand(),在执行前打点,执行后判断耗时并写日志

方法二(推荐):监听 yii\db\Command::EVENT_AFTER_EXECUTE 事件,在 common/config/main.php 中添加:

'on yii\db\Command::EVENT_AFTER_EXECUTE' => function ($event) { $duration = $event->sender->getExecutionTime() * 1000; if ($duration > 500) { // 超500ms记为慢查询 Yii::warning("Slow SQL ({$duration}ms): " . $event->sender->getRawSql(), 'slow-query'); } };

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载

这一步必须放在 components 外层,否则事件监听器不注册;【注意:不要在控制器里动态绑定该事件,否则仅对当前请求生效】

对接外部告警系统(以 Sentry 为例)

① 安装 Sentry SDK:composer require sentry/sentry

② 在 config/main.php 的 bootstrap 数组中加入 'sentry',并注册组件:

'sentry' => [ 'class' => 'sentry\sdk\SentryComponent', 'dsn' => 'https://xxx@o123.ingest.sentry.io/456', ],

③ 修改上一步的慢查询监听逻辑,加入 Sentry 上报:

if ($duration > 500) { Yii::warning(...); \Sentry\captureMessage("Slow Query {$duration}ms: " . mb_strimwidth($event->sender->getRawSql(), 0, 120)); }

④ 部署后,只要某次查询超时,Sentry 控制台立即出现带 SQL 片段、堆栈、请求 URL 的告警事件,点击即可定位到具体 Action 和行号。

这一步做完,慢查询就从“被动排查”变成“主动拦截”。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

yii模型查询 yii

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PHP Yii框架专题
PHP Yii框架专题

本专题专注于PHP主流框架Yii的应用,系统讲解MVC架构、路由机制、数据库操作、表单处理、安全验证与RESTful API 开发等核心内容。通过电商网站、后台管理系统与内容管理平台等实战项目,帮助学员快速掌握Yii框架的开发技巧与实战经验。

2025.09.04

2890

22

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

20

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

20

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

20

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

20

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

20

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

220

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

140

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

120

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习