【问题标题】:jute.maxbuffer affects only incoming trafficjute.maxbuffer 仅影响传入流量
【发布时间】:2016-02-02 15:08:25
【问题描述】:

此值是否仅影响传入流量?如果我在 zookeeper 服务器和 zookeeper 客户端上将此值设置为 4MB 并启动我的客户端,当我请求路径 /abc/asyncMultiMap/subs 时,我仍然会获得 > 4MB 的数据吗?如果/subs 的数据大于 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]

【问题讨论】:

    标签: apache-zookeeper vert.x


    【解决方案1】:

    响应中没有分块。

    这是一个服务器端设置。如果整个响应大于jute.maxbuffer 设置,您将收到此错误。此响应限制还包括 znode 的子节点列表,因此即使 subs 没有大量数据但有足够的子节点,以至于它们的路径长度超过最大缓冲区大小,您也会收到错误。

    【讨论】:

      【解决方案2】:

      “这是服务器端设置” 此语句不正确,jute.maxbuffer 也在客户端上由 Record 实现接收 InputArchive 的类进行评估。每次读取字段并将其存储到 InputArchive 时,都会根据 jute.maxbuffer 检查该值。例如ClientCnxnSocket.readConnectResult

      我在 ZK 3.4 中对其进行了调查

      【讨论】:

        猜你喜欢
        • 2013-06-30
        • 2013-03-19
        • 1970-01-01
        • 2022-01-17
        • 2011-02-27
        • 1970-01-01
        • 1970-01-01
        • 2017-11-04
        • 1970-01-01
        相关资源
        最近更新 更多