ZNode buffer过大故障
问题现象描述
清理ZK时无法删除ZNode,提示“Packet len XXX is out of range!”。
根本原因分析
创建与ZooKeeper连接之后,要对某个ZNode进行读写操作,ZooKeeper为了提高吞吐量,先判断下该节点数据量大小是否超过设置的jute.maxbuffer,如果是,则抛出异常。
解决方案
- 将待操作节点的大小减下来,小于默认的4M。
- 修改“/opt/apache-zookeeper-3.6.3-bin/bin/zkCli.sh”,增加jute.maxbuffer大小。
"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "-Dzookeeper.log.file=${ZOO_LOG_FILE}" \ "-Djute.maxbuffer=41943040" \ -cp "$CLASSPATH" $CLIENT_JVMFLAGS $JVMFLAGS \ org.apache.zookeeper.ZooKeeperMain "$@"
父主题: ZooKeeper故障