记录一次Clickhouse持续占用CPU超过100%问题分析

Clickhouse版本21.7.5.29,问题现象:长久占用CPU一直在100%以上,如下所示:

使用Hermes智能体连接上服务器分析,结论如下:

1. ClickHouse 错误日志(800MB!)

clickhouse-server.err.log 818 MB ← 当前活跃

err.log.0.gz 43 MB ← 2026-09-20 02:27

err.log.1.gz 43 MB

err.log.2-8.gz 每天 40+ MB

err.log 有 800MB + 9 个 40MB+ 历史文件 = 每天产生 ~50MB error 日志!

2. 重复错误 - Mutation 卡住

复制代码
Cannot convert NULL value to non-Nullable type:
FUNCTION CAST(sourceKey :: 7, 'String' :: 9) -> CAST(sourceKey, 'String') String : 8
(while reading from part /var/lib/clickhouse/store/...)
DB::MergeTreeDataMergerMutator::mutateSomePartColumns
DB::StorageMergeTree::mutateSelectedPart

这是 ALTER ... DELETE/UPDATE mutation 操作 → 持续失败 → 持续重试 → 死循环!

3. 后台 thread top 1 = BgSchPool (Schedule Pool)

复制代码
98798479 CPU ticks  tid=24346  cmd=BgSchPool/D

BgSchPool = ClickHouse 后台调度池,专门跑 mutation / merge / 复制。它持续在跑,但因为 mutation 一直失败,不断重试同一个失败任务。

4. stack trace 显示 mutation 卡在 part /var/lib/clickhouse/store/0e7/...

某个表的某个 part 数据有 NULL 字段 --- 但表 schema 不允许 NULL → mutation 100% 失败 → 重试 → 死循环

可选的修复方案(按风险递增)

方案 A: 看 mutation queue(最低风险)

复制代码
SELECT * FROM system.mutations WHERE is_done = 0;

智能体推荐了四种方案,我选择了A方案,执行结果如下:

确实有很多。

让智能体自己修复,捣鼓了半天,没有修复成功,但是给出了建议,

发现 2022 年的坏 part 反复重试 → 物理删除它:

复制代码
ALTER TABLE xx.xx_info_old DROP PARTITION 202212;

执行删除了,CPU负载降下来了,然后清理了MUTATION文件:

复制代码
KILL MUTATION WHERE mutation_id = 'xxx';

(第一见这种直接KILL的SQL语句)

相关推荐
Sayai4 天前
ClickHouse WITH FILL 实战:监控大屏时间序列补零,附多粒度指标表与物化视图级联设计
大数据·运维·数据仓库·clickhouse·物化视图
张忠琳5 天前
【hermes-agent】Hermes Agent 自我进化原理之一
ai·agent·hermes
l1t8 天前
DeepSeek总结的clickhouse的二进制文件自解压机制
clickhouse
l1t9 天前
DeepSeek总结的pg_clickhouse 与 chdb 更新:编码、嵌套与类型
数据库·clickhouse·postgresql
张忠琳9 天前
【hermes-agent】Hermes Agent 自我进化原理之二
ai·agent·hermes
拔剑纵狂歌11 天前
ClickHouse system.query_log 字段详解与排障实践
后端·clickhouse·1024程序员节
SelectDB技术团队11 天前
Apache Doris 高性能 Open Lake Variant 读写技术解析(含对比数据)
数据结构·数据库·clickhouse·日志·apache doris·selectdb·湖仓架构升级
SelectDB技术团队11 天前
ClickHouse 存日志的能力边界:并发、检索与 trace 回放的实测对照
数据结构·数据库·clickhouse·日志分析·apache doris·日志存储
SelectDB技术团队12 天前
Agent Trace 数据底座建设:宽表建模、全文检索与成本聚合的配置与验证步骤
大数据·python·clickhouse·elk·elasticsearch·全文检索·复杂查询
此时不提桶,更待何时12 天前
05-03-B-ClickHouse与OLAP面试与生产事故实战
clickhouse·面试·nosql