zookeeper报错length is greater than jute.maxbuffer=1048575

14 篇文章 0 订阅
11 篇文章 0 订阅

1、场景

最近在给上云项目部署系统,通过压测都已经正式上生产后发现kafka存在异常错误,经排查发现zookeeper也存在错误,怀疑kafka的问题可能是由于zk异常到的,报错如下
在这里插入图片描述

2022-11-17 06:26:43,052 [myid:] - WARN  [NIOWorkerThread-1:NIOServerCnxn@380] - Close of session 0x0
java.io.IOException: Len error. A message from /172.26.91.147:60500 with advertised length of 1195725856 is either a malformed message or too large to proc
ess (length is greater than jute.maxbuffer=1048575)
        at org.apache.zookeeper.server.NIOServerCnxn.readLength(NIOServerCnxn.java:549)
        at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:339)
        at org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest.doWork(NIOServerCnxnFactory.java:508)
        at org.apache.zookeeper.server.WorkerService$ScheduledWorkRequest.run(WorkerService.java:154)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
2022-11-17 06:26:48,687 [myid:] - WARN  [NIOWorkerThread-2:NIOServerCnxn@380] - Close of session 0x0
java.io.IOException: Len error. A message from /172.26.91.147:60506 with advertised length of 1195725856 is either a malformed message or too large to proc
ess (length is greater than jute.maxbuffer=1048575)
        at org.apache.zookeeper.server.NIOServerCnxn.readLength(NIOServerCnxn.java:549)
        at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:339)
        at org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest.doWork(NIOServerCnxnFactory.java:508)
        at org.apache.zookeeper.server.WorkerService$ScheduledWorkRequest.run(WorkerService.java:154)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)

排查过程如下------------------>

2、原因

关键性错误描述

java.io.IOException: Len error. A message from /172.26.91.147:60506 with advertised length of 1195725856 is either a malformed message or too large to proc
ess (length is greater than jute.maxbuffer=1048575)

来自/1772.26.91.147:60500、通告长度为1195725856的消息格式不正确或太大,无法处理(长度大于jut.maxbuffer=1048575

客户端发送的包太大,超过了zookeeper的jute.maxbuffer的设置,默认大小为1048575。
处理方法:修改jvm内存参数jute.maxbuffer大小调整到50M=512000KB=524288000Bytes(默认的大约1M)

  • 修改bin/zkServer.sh或者zkEnv.sh
    JVMFLAGS="$JVMFLAGS -Djute.maxbuffer=524288000"

  • 由于这里是自己打的arm架构的镜像无法直接修改启动脚本文件

zookeeper默认内置了修改jvm内存参数的启动文件,只是默认改文件并不存在

  • 查看zkEnv.sh脚本文件可以看到我们可以通过配置java.env文件来自定义设置jvm内存参数
    在这里插入图片描述
    在这里插入图片描述

3、结论

  • 通过添加java.env配置文件,挂载到容器中的相关目录下(我这里是:/opt/zookeeper/conf/java.env)
cat > java.env << EOF
export JVMFLAGS="-Xms1024m -Xmx1024m -Djute.maxbuffer=5000000000 $JVMFLAGS"
EOF
  • 通过修改不同的jvm内存参数来判断配置文件是否被读取
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值