【问题标题】:Zookeeper znode countZookeeper znode 计数
【发布时间】:2017-01-17 02:30:45
【问题描述】:

这里是zookeeper监控的输出

    zk_version  3.4.6-1569965, built on 02/20/2014 09:09 GMT
    zk_avg_latency  0
    zk_max_latency  0
    zk_min_latency  0
    zk_packets_received 3
    zk_packets_sent 2
    zk_num_alive_connections    1
    zk_outstanding_requests 0
    zk_server_state follower
    zk_znode_count  16349
    zk_watch_count  0
    zk_ephemerals_count 6
    zk_approximate_data_size    19502850
    zk_open_file_descriptor_count   30
    zk_max_file_descriptor_count    4096

我想了解 zk_znode_count 指的是什么,并且我想保持 (zk_znode_count & zk_approximate_data_size) 值最小以避免与关注者的同步问题。

有人可以对这些价值观提出一些见解

【问题讨论】:

    标签: apache-zookeeper znodes


    【解决方案1】:

    zk_znode_count 是 ZooKeeper 集合中存储的 znode 总数。每次客户端创建一个新的 znode 时,这个计数器都会增加。每次客户端删除一个新的 znode(显式删除或在断开连接后删除其临时 znode)时,此计数器都会递减。

    zk_approximate_data_size 是存储在 ZooKeeper 集成中的所有 znode 的近似内存消耗。它被称为近似值,因为它可能无法考虑内部数据结构中的一些开销因素。 (当前实现是一个 Java ConcurrentHashMap 映射 String 到 znode 数据和一些元数据的路径。)对于大规模使用,最好监控 zk_approximate_data_size 并确保它不会太接近耗尽分配的 JVM堆大小。

    【讨论】:

    • 如何限制 zk_approximate_data_size。假设我想保留只有一周大的 znode,或者我想拥有最大 50 MB 的 zk_approximate_data_size。我可以使用 zkCli 获取超过一周的 znode 吗?
    • ZooKeeper 跟踪每个 znode 的创建时间和修改时间。当您在 CLI 中运行 get 之类的命令时,这些是可见的,并且可以通过 ZooKeeper Java 客户端 API 方法访问。没有特定的命令可以仅查询特定年龄的 znode,因此您必须自己扫描它们并检查创建时间和修改时间。 Apache JIRA ZOOKEEPER-2169 跟踪 znode 上 TTL 的实现,但直到版本 3.6.0 才发布,因此更具前瞻性。没有基于大小的限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2015-10-29
    • 2013-08-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多