ZooKeeper 服务端要为每个连接、每个 watch 付出多少内存?这篇在 20000 个 znode 的树上,先加 400 个空闲连接,再加 20000 个 watch,每一步都先 GC 再读 JVM 堆,得到每个连接、每个 watch 的大致内存代价。
zk_num_alive_connections = 402;JVM 已用堆 13.4 MiB(+1.0),RSS 127 MiB(+3)
这些数字是在 JVM 堆 256 MiB、小路径的条件下得到的粗略值,只用来估数量级。容量规划见第 60 篇。
zk_watch_count = 20000;JVM 已用堆 18.7 MiB(比只有连接时 +5.3),RSS 144 MiB wchs → 400 connections watching 20000 paths Total watches:20000