开发者社区> 问答> 正文

大量的Watcher与ZNode关系会导致什么问题?

大量的Watcher与ZNode关系会导致什么问题?

展开
收起
夹心789 2024-07-04 12:17:26 27 0
3 条回答
写回答
取消 提交回答
  • 大量的Watcher与ZNode关系会导致ZooKeeper服务器的内存消耗增加,因为Watcher机制需要在内存中维护状态,当Watcher和ZNode的数量非常大时,可能会引起性能问题和资源压力。

    2024-07-05 11:14:07
    赞同 展开评论 打赏
  • ZooKeeper 在运行一段时间后,内存占用率会不断增加,容易导致内存耗尽(OOM)的问题。

    如果 ZNode、和 Watcher 的数量都比较多,并且客户端订阅 ZNode 也比较多,甚至全量订阅。这两张 Hash 表记录的关系就会呈指数增长,最终会是一个天量!

    当全订阅时,如图演示:

    当 ZNode数量:3,Watcher 数量:2 WatchTables 和 Watch2Paths 会各有 6 条关系。
    image.png

    通过监控发现,异常的 ZK-Node。ZNode 数量大概有 20W,Watcher 数量是5000。而 Watcher 与 ZNode 的关系条数达到了 1 亿。

    如果存储每条关系的需要 1 个 HashMap&Node(32Byte),由于是两个关系表,double 一下。那么其它都不要计算,光是这个“壳”,就需要 210000^232/1024^3 = 5.9GB 的无效内存开销。

    参考文档https://blog.csdn.net/yunqiinsight/article/details/138615944

    2024-07-05 09:21:04
    赞同 展开评论 打赏
  • 大量的Watcher与ZNode关系会导致内存开销显著增加。因为每一条关系都需要存储,如果关系数量巨大,那么所需的内存空间也会非常大。例如,在监控中发现的异常ZK-Node中,仅存储这些关系的“壳”就需要约5.9GB的无效内存开销。

    2024-07-04 13:48:43
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载