ClickHouse怎么排查Zookeeper负载过高导致副本同步中断变只读

千杰君_9963

千杰君_9963

2026-10-12

225人浏览

原创

先查system.replicas定位只读表及延迟:关注is_readonly=1、replica_is_active是否为0、absolute_delay是否持续>300秒;若后者高但前者为1,说明同步卡在zookeeper协调;若replica_is_active=0,则zookeeper连接已断或会话过期。

clickhouse怎么排查zookeeper负载过高导致副本同步中断变只读

查 system.replicas 确认只读表和延迟指标

只读状态不是凭空出现的,system.replicas 是第一手线索。执行查询后重点关注三个字段:is_readonly=1 的表、replica_is_active 是否为 0、以及 absolute_delay 是否持续 >300(秒)。如果 absolute_delay 高但 replica_is_active=1,说明副本还在尝试同步,但卡在 ZooKeeper 协调环节;如果 replica_is_active=0,基本可断定 ZooKeeper 连接已断或会话过期。

常见误判点:仅看 is_readonly 就动手删 ZK 节点——实际可能只是单个副本临时失联,ZooKeeper 自身仍健康。务必先交叉验证。

用 nc + stat 检查 ZooKeeper 实时连接与会话状态

别依赖 ClickHouse 日志里的模糊提示,直接穿透到 ZooKeeper 层。用 echo stat | nc zk1.clickhouse 2181 获取原始响应,关键看两行:

  • Mode: follower 或 leader —— 如果显示 standalone 或无响应,说明集群分裂或节点宕机
  • Zxid: 后的十六进制数 —— 连续多次执行,若该值长时间不递增,说明写请求压根没被处理

注意:Latency min/avg/max 中的 max 若超过 50ms,尤其伴随大量 OutstandingRequests(未完成请求数)>10,就是典型过载信号。此时 ClickHouse 的心跳包很可能被排队,触发只读保护。

Audiobox
Audiobox

Audiobox是一款AI音频处理工具,Meta推出的免费AI语音和声音生成模型。

下载

定位 ZooKeeper 压力来源:看 dataLogDir 和 merge 频次

ZooKeeper 不是瓶颈,是压力的“显影液”。真正压垮它的,往往是 ClickHouse 侧高频小批量写入和无节制的后台 merge:

  • dataLogDir 和 dataDir 是否共用同一块磁盘?共用时,ZK 日志刷盘会和 ClickHouse 数据写入抢 IO,iostat -x 1 5 中 %util 持续 >85% 就是铁证
  • 查 system.merges:如果 elapsed 很小但 merge_reason 大量是 REPLACED 或 TTL,说明表配置了高频 TTL 或重复插入导致碎片化,间接抬高 ZK 的协调次数
  • ReplicatedMergeTree 表的 zookeeper_path 是否嵌套过深?比如 /clickhouse/tables/prod/us-east/xxx/replicas/node1 —— 路径越长,ZK 序列化/反序列化开销越大

一个容易被忽略的事实:auxiliary zookeeper 功能虽已合入主线,但默认不启用。如果你的集群有多个业务线共用一套 ZK,必须手动在 config.xml 中为不同表指定独立 zookeeper 配置段,否则压力无法分流。

修复前必须做的三件事:停写、清队列、验权限

别急着 rmr ZK 节点。在执行任何清理前,确认:

  • 业务侧是否已暂停向问题表写入?继续写入会导致 ZK 队列进一步堆积,修复窗口期缩短
  • ClickHouse 节点本地的 queue_size 是否仍在增长?用 SELECT queue_size, inserts_in_queue FROM system.replicas WHERE is_readonly = 1 实时观察。若 inserts_in_queue > 0,说明还有积压任务没被 ZK 接收,此时删 ZK 节点只会让副本彻底失联
  • /var/lib/clickhouse/ 目录下对应表的 metadata/ 和 data/ 子目录是否有写权限?权限错误(如被 chown 错误修改)也会让 ClickHouse 主动进入只读模式,而非 ZK 问题

最危险的操作是:在没确认 replica_is_active=0 的前提下,直接在 ZK 中删除 /replicas/xxx 节点。这会导致副本元数据永久丢失,恢复时只能靠人工导入,且极易引入数据不一致。

相关文章

keep
keep

Keep是一款健身安排,无论是想减肥塑形或增肌,还是寻找健身跑步瑜伽计步等训练计划,你可以随时随地选择课程进行训练!权威教练视频教学,健身干货自由分享!有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

数据库优化

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
dubbo和zookeeper有什么区别
dubbo和zookeeper有什么区别

dubbo和zookeeper的区别:1、功能定位;2、使用场景;3、数据存储与协调;4、集成与关系;5、性能与可靠性;6、扩展性与灵活性;7、社区与生态系统。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

596

5

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

20

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

20

15

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

0

15

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

2026.10.10

20

26

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

2026.10.10

20

32

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

2026.10.10

20

16

Kratos框架零基础入门教程
Kratos框架零基础入门教程

本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

2026.10.10

20

15

C++条件判断语句怎么写
C++条件判断语句怎么写

C++条件判断是控制程序执行流程的重要基础。本专题介绍if、if-else、else if和switch等常见分支语句,结合条件表达式、比较运算符与代码示例,帮助初学者掌握不同场景下的判断逻辑。

2026.10.10

0

13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习