# DWS_2000000031 DWS集群活跃会话数量使用率超阈值
#### 告警解释
DMS告警模块在指定周期内，检测到集群活跃会话数量使用率超过当前设定阈值，且抑制条件不满足时，DMS告警模块将触发该告警；检测到集群活跃会话数量使用率低于当前设定阈值时，DMS告警模块将消除该告警。
#### 告警属性
| **告警ID**      | 告警归属 | **告警级别**       | 告警类型 | 业务类型    | 是否可自动清除 |
|:---|:---|:---|:---|:---|:---|
| DWS_2000000031 | 租户面  | \>90 紧急，\>80 重要 | 业务告警   | 数据仓库服务 | 是         |
   
#### 告警变更
| 变更类型 | 变更版本     | 变更描述 | 变更原因   |
|:---|:---|:---|:---|
| 新增 | 9.1.0.227 | 首次增加 | 首次增加 |
   
#### 告警参数
| 类别                          | **参数名称** | **参数含义**             |
|:---|:---|:---|
| 定位信息                       | 集群名称       | 产生告警的集群名称。             |
| 定位信息                       | 租户名称     | 集群所属的租户名称。            |
| 定位信息                       | 告警级别       | 产生告警的级别。                |
| 附加信息    | 资源ID      | 产生告警的集群ID。           |
| 附加信息    | 资源名称    | 产生告警的集群名称。          |
| 附加信息    | 首次告警时间    | 告警首次发生时间，包含告警阈值与当前值。 |
   
#### 告警指标
调用[获取指定指标相关采集数据 - ListMetricsData](https://support.huaweicloud.com/api-dws/ListMetricsData.html)API接口获取该告警指标，其中接口中的指标名称为**QueryMonitor**。
- **请求示例** ：
  ```
  GET https://{Endpoint}/v1/{project_id}/clusters/{cluster_id}/dms/metrics/QueryMonitor?offset=0&limit=1&from=1786782138946&to=1786784159004&order_by=ctime&sort_by=desc
  ```
  
- **响应示例** **：**
  告警指标为响应结果中**query_status为active**的数据条数。
  ```
  {
   "code": 0,
   "msg": "OK",
   "data": [
    {
     "query_id": "80220368369538752",
     "backend_start": 1786783088,
     "pid": "140504051222312",
     "block_time": 0,
     "application_name": "OM",
     "estimate_total_time": 0,
     "memory_skew_percent": 0,
     "max_peak_memory": 0,
     "iops_skew_percent": 0,
     "min_peak_memory": 0,
     "ctime": 1786783088000,
     "warning": "",
     "min_cpu_time": 0,
     "total_cpu_time": 0,
     "dntime_skew_percent": 0,
     "average_spill_size": 0,
     "query": "/* autopilot */ SELECT pgsac.datname as db_name, pgws.nodename as inst_name, pgsac.pid as pid, pgsac.query_id as query_id, pgws.query_band, null as job_name, null as job_inst, pgsac.usename as user_name, pgsac.application_name, pgsac.client_addr as client_address, pgsac.client_hostname, pgsac.client_port, pgsac.waiting, extract('epoch' from pgws.start_time at time zone 'UTC')::bigint as start_time, pgswlm.block_time, pgws.duration, pgws.estimate_total_time, pgws.estimate_left_time, pgswlm.enqueue, pgswlm.priority, pgsac.resource_pool, pgws.control_group, pgws.min_peak_memory, pgws.max_peak_memory, pgws.average_peak_memory, pgws.memory_skew_percent, pgws.estimate_memory, pgws.spill_info, pgws.min_spill_size, pgws.max_spill_size, pgws.average_spill_size, pgws.spill_skew_percent, pgws.min_dn_time, pgws.max_dn_time, pgws.average_dn_time, pgws.dntime_skew_percent, pgws.min_cpu_time, pgws.max_cpu_time, pgws.total_cpu_time, pgws.cpu_skew_percent, pgws.warning, pgws.average_peak_iops, pgws.iops_skew_percent, pgws.ma",
     "priority": 2,
     "start_time": 0,
     "max_spill_size": 0,
     "db_name": "postgres",
     "average_peak_memory": 0,
     "query_plan": "",
     "query_band": "",
     "job_inst": "",
     "wlm_attrib": "Internal",
     "spill_info": "",
     "virtual_cluster_id": 81882,
     "waiting": false,
     "average_dn_time": 0,
     "user_name": "Ruby",
     "min_spill_size": 0,
     "query_status": "active",
     "resource_pool": "root",
     "duration": 0,
     "client_port": "-1",
     "estimate_memory": 0,
     "elapsed_time": 0,
     "curr_xact_start": 1786783088,
     "client_address": "",
     "lane": "None",
     "query_elapsed_time": 0,
     "control_group": "",
     "average_peak_iops": 0,
     "query_start": 1786783088,
     "max_dn_time": 0,
     "cpu_skew_percent": 0,
     "min_peak_iops": 0,
     "enqueue": "None",
     "job_name": "",
     "client_hostname": "",
     "spill_skew_percent": 0,
     "system_query": true,
     "estimate_left_time": 0,
     "min_dn_time": 0,
     "wlm_status": "running",
     "max_peak_iops": 0,
     "inst_name": "cn_5001",
     "max_cpu_time": 0,
     "state_change": 1786783088
    }
   ],
   "count": 166
  }
  ```
  
 
#### 对系统的影响
可使用会话数量不足，影响业务执行。
#### 可能原因
max_active_statements参数设置过低。
#### 处理步骤
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 左导航栏选择"集群 \> 集群列表"。
3. 在集群列表中找到所需要的集群，单击集群名称，进入"集群详情"页面。
4. 导航栏切换至"参数修改"页签，在**"参数列表"** 页面搜索并修改以下参数值，并单击**"保存"** 。
   
   1. "常用配置"中输入**"resource_track_duration"** ，并设置**"resource_track_duration"** 的CN/DN参数值为**"** **1** **"** 。
      图1修改resource_track_duration参数   
      ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617505445.png "点击放大")
      
      
   
   2. "常用配置"中输入**"topsql_retention_time"** , 并设置**"topsql_retention_time"** 的CN/DN参数值为**"** **14** **"** ，可按需调整TopSQL记录保存天数。
      图2修改topsql_retention_time参数   
      ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225772.png "点击放大")
      
      
   
   
   
   
5. **找到发生死锁的SQL语句。**
   
   - **方法一**
   
   
   1. 返回集群首页，单击集群所在行操作列的**"监控面板"**进入集群监控页面。
   
   2. 左导航栏选择**"监控 \> 历史查询"** ，在历史查询页面右上角选择过滤条件：**"取消原因"** 包含关键字**"deadlock detected"**。
   
   3. 找到发生死锁的SQL语句，根据时间排序，可找到最近发生死锁的SQL语句。
      图3查找死锁SQL语句1   
      ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225770.png "点击放大")
      
      
   
   
   - **方法二**
   
   
   1. 返回集群首页，左导航栏选择**"监控 \> 优化诊断"**，进入优化诊断页面。
   
   2. 切换至**"历史查询分析"** 界面，并在**"历史查询详情"** 模块的搜索框选择过滤条件：**"取消原因"** 包含关键字**"** **deadlock detected"**。
   
   3. 找到发生死锁的SQL语句，根据时间排序，可找到最近发生死锁的SQL语句。
      图4查找死锁的SQL语句2   
      ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617625549.png "点击放大")
      
      
   
   
   
   
6. 死锁问题解决：8.2.1及以上集群版本后会自动检测死锁，死锁检测会延迟1s进行，检测到死锁会自动释放锁。
 
#### 告警清除
此告警修复后，自动清除。
#### 参考信息
不涉及。
