
# ALM-27013 数据库95% SQL响应时间超过阈值
#### 告警解释
系统每30秒周期性检查DBServer数据库95% SQL响应时间，若采集的95% SQL响应时间连续n次（n为设定的平滑次数，默认值为3）超过设定阈值时，系统将产生此告警。
当平滑次数为1，DBServer数据库95% SQL响应时间小于或等于阈值时，该告警恢复；当平滑次数大于1，DBServer数据库95% SQL响应时间连续n次（n为设定的平滑次数）小于阈值的90%时，该告警恢复。
本章节仅适用于MRS 3.6.0-LTS.1及之后版本。
#### 告警属性
| 告警ID  | 告警级别                                                                              | 告警类型   | 业务类型                  | 是否可自动清除 |
|:---|:---|:---|:---|:---|
| 27013 | 重要（默认阈值为10） 次要（默认阈值为15） | 业务质量告警 | FusionInsight Manager | 是       |
   
#### 告警参数
| 类别                                                                  | 参数名称 | 参数含义       |
|:---|:---|:---|
| 定位信息                                                                | 来源   | 产生告警的集群名称。 |
| 定位信息                                                                | 服务名  | 产生告警的服务名称。 |
| 定位信息                                                                | 角色名  | 产生告警的角色名称。 |
| 定位信息                                                                | 主机名  | 产生告警的主机名。  |
| 附加信息  | 门限值  | 告警触发的阈值。   |
| 附加信息  | 当前值  | 当前采集的指标值。  |
   
#### 对系统的影响
- SQL长期运行时间长会导致系统资源占用高，影响其它任务获取资源。
- 业务任务运行缓慢，影响客户体验。
 
#### 可能原因
- 告警阈值配置不合理。
- 数据库95% SQL响应时间超过阈值。
  - 系统资源使用率过高导致任务运行缓慢。
  
  
  
  - SQL本身业务逻辑复杂或者数据量过大导致任务运行缓慢。
   
 
#### 处理步骤
**检查阈值设置是否合理。**
1. 在FusionInsight Manager，选择"运维 \> 告警 \> 阈值设置 \> DBService \> 数据库 \> 95% SQL响应时间"，查看该告警阈值是否合理。 
   - 是，执行[步骤 3]。
   
   - 否，执行[步骤 2]。
   
   
   
   
2. 单击"操作"列的"修改"，根据实际服务的使用情况修改告警阈值。
3. 选择"集群 \> 服务 \> DBService"，在"概览"页面查看"DBService SQL响应时间"图表，检查数据库SQL响应时间是否低于设置的阈值。
   
   - 是，执行[步骤 4]。
   
   - 否，执行[步骤 5]。
   
   
   
   
4. 等待2分钟查看告警是否自动恢复。
   
   - 是，处理完毕。
   
   - 否，执行[步骤 5]。
   
   
   
   
**检查数据库95% SQL响应时间**。
5. 以**omm** 用户登录DBService主管理节点，执行以下命令登录DBService数据库。
   
   **gsql -p 20015 -U omm -W** *${数据库密码}*
   
   
6. 执行以下命令，查看数据库95% SQL响应时间是否超阈值。 
   1. 执行如下SQL计算当前数据库中SQL执行消耗的总数量并计算前95%的SQL总数量。 **select count(1) from pg_stat_activity where STATE = 'active' and pid \<\> pg_backend_pid()**
      前95%的SQL数量 = 总数量 \* 0.95
      
   
   2. 执行如下SQL计算当前数据库中SQL执行耗时前95%的SQL执行总耗时。 **SELECT SUM(EXTRACT(EPOCH FROM (NOW() - QUERY_START::TIMESTAMPTZ))) AS TOTALSECONDS FROM (SELECT QUERY_START FROM PG_STAT_ACTIVITY WHERE PID \<\> PG_BACKEND_PID() AND STATE = 'active' ORDER BY NOW() - QUERY_START LIMIT $** *{前95%的SQL数量}* **);**
      
   
   3. 使用以下公式计算95% SQL响应平均耗时，并确认是否超阈值。 95% SQL响应平均耗时 = 总耗时 / 前95%的SQL数量
      
   
   
   - 是，执行[步骤 7]。
   
   - 否，执行[步骤 8]。
   
   
   
   
7. 根据实际情况处理高耗时的SQL任务或者修改告警阈值，并等待2分钟，查看告警是否清除。
   
   - 是，执行完毕。
   
   - 否，执行[步骤 8]。
   
   
   
   
**收集故障信息**
8. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
9. 在"服务"中勾选待操作集群的"DBService"，"OMS"。
10. 设置日志收集的主机，可选项，默认所有主机。
11. 单击右上角的时间编辑按钮设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后10分钟，单击"下载"。
12. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
不涉及。
