【zookeeper】报错整理 zookeeper Packet len* is out of range
前言
最近发现测试环境 zookeeper
长时间 Full GC
导致服务异常,经过排查后发现,是 zookeeper
服务里面存储的数据量过大,占用 JVM
堆内存过大,导致测试环境基本无法正常使用,于是在调大 JVM heap
内存大小,并重启 zk
后,准备清理一波数据,但是在删除数据时报错。这里整理并记录下。
执行命令
进入zookeeper 后,发现这个节点 执行 ls, stat,都会报错。
报错内容
问题原因
客户端单次操作的数据大小,超过了 jute.maxbuffer
限制。
相关代码
解决方案
java
代码
对于 java
代码,只需要添加一个System 环境变量即可。
zkCli.sh
shell 客户端下,可以修改客户端启动脚本
- server
zkServer.sh
新增-Djute.maxbuffer
配置,这边以10M为例,具体大小需按实际情况修改(ZOO_USER_CFG为修改过部分的关键词)。
注意
ZooKeeper
是一套高吞吐量的系统,为了提高系统的读取速度,ZooKeeper
不允许从文件中读取需要的数据,而是直接从内存中查找。
还句话说,ZooKeeper集群中每一台服务器都包含全量的数据,并且这些数据都会加载到内存中。同时ZNode的数据并支持Append操作,全部都是Replace。
所以从上面分析可以看出,如果ZNode的过大,那么读写某一个ZNode将造成不确定的延时;同时ZNode过大,将过快地耗尽ZooKeeper服务器的内存。这也是为什么ZooKeeper不适合存储大量的数据的原因。
参考
- https://cloud.tencent.com/developer/article/1516691
- https://blog.csdn.net/liuxinghao/article/details/59071373
- https://blog.csdn.net/zyq_2014/article/details/85948902
__EOF__

本文作者:彬在俊
本文链接:https://www.cnblogs.com/erlou96/p/16878159.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/erlou96/p/16878159.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理