jute.maxbuffer 仅影响传入流量
jute.maxbuffer affects only incoming traffic
这个值是否只影响传入流量?如果我在 zookeeper 服务器和 zookeeper 客户端上将此值设置为 4MB,然后启动我的客户端,当我请求路径 /abc/asyncMultiMap/subs
时,我是否仍会获得 > 4MB 的数据。如果 /subs
有大于 4MB 的数据,服务器是否会将其分成 <= 4MB 的块并将其分段发送给客户端?
我在客户端(通过 vertx-zookeeper)和服务器上都使用 zookeeper 3.4.6。我在客户端上看到错误,抱怨数据包长度大于 4MB。
java.io.IOException: Packet len4194374 is out of range!
at org.apache.zookeeper.ClientCnxnSocket.readLength(ClientCnxnSocket.java:112) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
响应中没有分块。
这是服务器端设置。如果整个响应大于 jute.maxbuffer
设置,您将收到此错误。此响应限制也包括 znode 的子节点列表,因此即使 subs
没有很多数据但有足够的子节点,以至于它们的路径长度超过最大缓冲区大小,您也会收到错误。
“这是 server-side 设置” 此声明不正确,jute.maxbuffer 也在客户端上通过 Record 实现 类 进行评估,该 类 接收 InputArchive。每次读取一个字段并将其存储到 InputArchive 时,都会根据 jute.maxbuffer 检查该值。例如ClientCnxnSocket.readConnectResult
我在ZK 3.4中调查过