ZooKeeper客户端无法使用
ZooKeeper客户端无法使用
现象描述
当往ZooKeeper节点写入超过4MB数据的文件时,ZooKeeper客户端无法使用,出现如下信息。
2014-11-07 15:23:34,237 | WARN | NIOServerCxn.Factory:/10.18.51.157:24002 | Exception causing close of session 0xe4985ef3128000d due to java.io.IOException: Len error 1080037 | org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:362)
2014-11-07 15:23:34,238 | INFO | NIOServerCxn.Factory:/10.18.51.157:24002 | Closed socket connection for client /10.18.51.156:44987 which had sessionid 0xe4985ef3128000d | org.apache.zookeeper.server.NIOServerCnxn.closeSock(NIOServerCnxn.java:1007)
可能原因
ZooKeeper的数据大小是由“jute.maxbuffer”参数的值决定的。如果数据超过配置的值,服务端会拒绝访问并出现以上异常。该参数的默认值为4MB,且该参数不能修改。在集群的服务端和客户端必须保持这两个参数的一致性。
定位思路
无。
处理步骤
建议用户不要去修改“jute.maxbuffer”参数的值,在ZooKeeper节点写入数据时,确保单个文件的大小不超过4MB。为确保ZooKeeper的性能,建议不要将大量的数据写入到ZooKeeper节点中。