
# ALM-45457 ClickHouse的副本队列中存在任务堆积
#### 告警解释
告警模块按30秒周期检测ClickHouse服务replication_queue任务队列中的任务数，当检测到任务数超过阈值（50,000），系统产生此告警。
当系统检测到任务数低于阈值，告警恢复。
本章节仅适用于MRS 3.6.0-LTS及之后版本。
#### 告警属性
| 告警ID  | 告警级别                                                                                       | 是否可自动清除 |
|:---|:---|:---|
| 45457 | 紧急（默认阈值为100,000） 重要（默认阈值为50,000） | 是       |
   
#### 告警参数
| 类别   | 参数名称 | 参数含义          |
|:---|:---|:---|
| 定位信息 | 来源   | 产生告警的集群或系统名称。 |
| 定位信息 | 服务名  | 产生告警的服务名称。    |
| 定位信息 | 角色名  | 产生告警的角色名称。    |
| 定位信息 | 主机名  | 产生告警的主机名。     |
   
#### 对系统的影响
当ClickHouse服务出现副本队列中任务堆积时，可能会导致MergeTree表的数据同步任务出现延迟，后续的写入和变更任务出现延迟，甚至进一步加剧系统负载。
#### 可能原因
- 高频的小批量写入，导致数据合并速度慢于写入速度。
- 集群中存在大量的mutation任务。
- 副本同步任务长时间未执行，集群中出现"ClickHouse副本间不一致"的告警。
 
#### 处理步骤
**检查是否存在高频的小批量写入**
1. 登录FusionInsight Manager页面，选择"运维 \> 告警 \> 告警"，查看当前告警"定位信息"中的角色名以及确认主机名所在的IP地址。
2. 以客户端安装用户，登录客户端的节点，执行如下命令： 
   **cd** *{客户端安装路径}*
   **source bigdata_env**
   - 集群已启用Kerberos认证（安全模式）： **kinit** *组件业务用户*
     **clickhouse client --host** *上报告警的ClickHouseServer实例IP* **--port** 9440 **--secure**
     
   
   - 集群未启用Kerberos认证（普通模式）： **clickhouse client --host** *上报告警的ClickHouseServer实例IP* **--user** *用户名* **--password** **--port**9440
     
   
   
   
   
3. 执行以下语句，排查集群中是否存在高频的小批量写入。 
   该查询语句用来分析ClickHouse集群中10分钟内是否存在写入数据量小于1000条的insert语句。
   ```
   SELECT user, query, count() AS insert_count, avg(written_rows) AS avg_rows_per_insert, min(event_time) AS first_time, max(event_time) AS last_time
   FROM clusterAllReplicas('default_cluster', system.query_log)
   WHERE (event_time >= (now() - toIntervalMinute(10))) AND (type = 'QueryFinish') AND (query_kind = 'Insert')
   GROUP BY user, query
   HAVING (insert_count >= 10) AND (avg_rows_per_insert < 10000)
   ORDER BY insert_count DESC;
   ```
   - 是，执行[步骤 4]。
   
   - 否，执行[步骤 5]。
    
   
   
4. 尝试降低或者停止高频的小批量写入业务；停止业务后，等待几分钟查看告警是否恢复。
   
   - 是，操作结束。
   
   - 否，执行[步骤 5]。
   
   
   
   
**检查是否存在大量的mutation任务**
5. 执行以下语句，排查集群中是否存在大量的mutation任务。
   
   ```
   select FQDN() as node, database, table, mutation_id, create_time, command, is_done, parts_to_do FROM clusterAllReplicas('default_cluster', system.mutations) WHERE is_done = 0;
   ```
   - 是，执行[步骤 6]。
   
   - 否，执行[步骤 8]。
   
   
   
   
6. 根据[步骤 5]中查询的结果，确认mutation任务相关的表名，尝试清理这些长时间（超过10分钟）未执行的mutation任务。
   
   **KILL MUTATION WHERE database = '库名' AND table = '表名';**
   或者：
   **KILL MUTATION WHERE database = '库名' AND table = '表名' AND mutation_id = 'mutation_id';**
   
   
7. 清理mutation任务后，等待一段时间，查看告警是否恢复。 
   - 是，操作结束。
   
   - 否，执行[步骤 8]。
   
   
   
   
**检查是否存在"ALM-45440ClickHouse副本间不一致"告警**
8. 查看集群告警中是否存在"ALM-45440ClickHouse副本间不一致"的告警。
   
   - 是，执行[步骤 8]。
   
   - 否，执行[步骤 10]。
   
   
   
   
9. 参考"ALM-45440ClickHouse副本间不一致"告警帮助指导处理该告警。处理完成后，在告警列表中查看"ALM-45457 ClickHouse的副本队列中存在任务堆积"告警是否清除。 
   - 是，操作结束。
   
   - 否，执行[步骤 10]。
   
   
   
   
**收集故障信息**
10. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
11. 在"服务"中勾选待操作集群的"ClickHouse"。
12. 在"主机"中选择异常的主机，单击"确定"。
13. 单击右上角的时间编辑按钮，设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后1小时，单击"下载"。
14. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
不涉及。
