首批通过分布式安全可靠测评,为关键业务系统打造
ob_tenant_slow_sql_exists OB 租户存在慢 SQL
更新时间:2023-08-22 10:46:20
告警描述
慢 SQL 是指 SQL 执行时长超过 100 ms 的 SQL,该阈值可通过 OCP 系统参数 ocp.ob.slowsql.threshold 进行设置。当租户存在慢 SQL 时会产生相应告警,告警按 SQL-ID 展示。该告警默认不开启,若您需要慢 SQL 告警则可启用该告警。
可通过设置系统参数 ocp.alarm.datasource.slow-sql-exclude-obclusters 来排除不需要慢 SQL 告警的集群,不同集群名以半角逗号分隔。
告警原理
| 参数 | 值 |
|---|---|
| 监控指标 | max_elapsed_time_ms |
| 指标来源 | 来源于 OCP-Agent 采集的 SQL_AUDIT 数据 (ob_hist_sql_audit_sample): select max(elapsed_time) as maxElapsedTimeUs from ob_hist_sql_audit_sample |
| 采集指标 | max_elapsed_time_ms:执行 SQL 的最大耗时 |
| 监控表达式 | max(max_elapsed_time_ms) |
| 采集周期 | 60 秒 |
告警信息
| 告警触发方式 | 告警等级 | 范围 |
|---|---|---|
| 基于监控指标的表达式 | 警告 | 租户 |
规则信息
| 监控指标 | 默认阈值(单位 ms) | 监控指标来源 | 检测周期 | 消除周期 |
|---|---|---|---|---|
| max_elapsed_time_ms | 100 | SQL 采集 | 60 秒 | 5 分钟 |
告警模板
告警概述
模板:${alarm_target} ${alarm_name}
样例:ob_cluster=obcluster-1:tenant_name=sys:sql_id=2A6D6C59E6D86C57519267B5EC2CBEC3 OB 租户存在慢 SQL
告警详情
模板:集群:${ob_cluster_name},租户:${tenant_name} 存在慢 SQL。数据库:${database},执行账号:${user_name},SQL ID:${sql_id},SQL 文本:${query_sql},首次发现时间:${start_time},最后发现时间:${end_time},慢 SQL 执行次数:${execution_count},平均影响行数:${avg_affected_rows},最大影响行数:${max_affected_rows},平均返回行数:${return_rows},最大返回行数:${max_return_rows}, 等待事件次数:${total_waits},平均等待时间:${avg_total_wait_time_ms} 毫秒,最大等待时间:${max_total_wait_time_ms} 毫秒,远程执行次数:${remote_plan_count}, 分布式执行次数:${dist_plan_count},平均执行耗时:${avg_elapsed_time_ms} 毫秒,最大执行耗时:${max_elapsed_time_ms} 毫秒
样例:集群:obcluster-1,租户:sys 存在慢 SQL。数据库:OceanBase,执行账号:ocp_monitor,SQL ID:2A6D6C59E6D86C57519267B5EC2CBEC3,SQL 文本:
select /\*+ query_timeout(10000000) \*/ sid as session_id, event_id, con_id as tenant_id, total_waits, time_waited_micro as time_waited_us from v$session_event where total_waits \> ? and (sid\> ? or (sid = ? and event_id \> ?)) order by sid, event_id limit 40000,首次发现时间:2022-04-06T14:18:44.579,最后发现时间:2022-04-06T14:18:44.579,慢 SQL 执行次数:1,平均影响行数:0,最大影响行数:0,平均返回行数:681,最大返回行数:681, 等待事件次数:1,平均等待时间:0.09 毫秒,最大等待时间:0.09 毫秒,远程执行次数:0, 分布式执行次数:0,平均执行耗时:4056.5 毫秒,最大执行耗时:4056.5 毫秒
对系统的影响
SQL 的执行过程会占用系统资源,当慢 SQL 个数过多时,会增加系统资源的占用率,导致系统的吞吐率受到影响;同时,SQL 执行过慢不符合业务预期,业务系统会受到影响。
可能原因
存在需要优化的 SQL,如大表关联查询、无索引等问题。
OBServer 节点资源不足,无法处理过多的请求,导致 SQL 执行速度变慢。
处理办法
使用 OCP 租户管理页面的 SQL 诊断功能,诊断慢 SQL 发生的原因;如果是业务 SQL 问题导致,可绑定索引或绑定执行计划等。
查看 OBServer 节点的资源使用率是否超限,如 CPU 使用率、IOPS 或 IO 耗时、网络吞吐率等。