延迟与吞吐实测:单机并发 1→64 个客户端,同步写吞吐 330 → 5130 次/秒(p50 3.0 → 12.1 ms);3 节点集群 64 个客户端 4306 次/秒;读吞吐受 Python 客户端限制(约 4700 次/秒),不是服务端上限。
GC 停顿对 ZooKeeper 的影响:串行 GC 下 10 万 znode 的 Full GC 停顿 14–83 ms,压测中最大写延迟 99 ms;自带的 JvmPauseMonitor 只记录到 10 ms(采样式,会低估),要以 GC 日志为准。
GC 日志与 Prometheus 指标:ZooKeeper 3.9.6 自带 Prometheus 指标提供者(metricsProvider.className + httpPort),/metrics 共 302 个指标名,含 znode_count、num_alive_connections、outstanding_requests、fsynctime_* 以及 jvm_gc_collection_seconds_*;GC 日志 -Xlog:gc* 记录每一次回收。
ZooKeeper JMX 监控实测:单机注册 StandaloneServer + InMemoryDataTree 两个 MBean,可读 TickTime / NumAliveConnections / AvgRequestLatency / Version 等属性,可调用 resetStatistics;集群节点的 MBean 按 ReplicatedServer → replica.N → Leader / Follower 分层,leader 下有每个 follower 的 Learner_Connections。
ZooKeeper 运行时指标监控:同一节点在空闲 / 稳定写入 / 异步突发 / 300 连接 + 6000 watch 四种状态下的 mntr 指标对比(avg_latency、outstanding_requests、num_alive_connections、watch_count、open_file_descriptor_count、avg_fsynctime…),以及 max 类指标需要定期 srst 的读数提醒。
ZooKeeper 四字命令实测:3.9.6 默认白名单只有 srvr(其它命令返回「not executed because it is not in the whitelist」);设成 * 后 ruok / srvr / stat / conf / cons / dirs / dump / envi / gtmk / isro / wchs / wchp / wchc 的实际输出。
四字命令的安全风险实测:白名单 * 时无需认证即可读到 conf / envi / cons / dump / wchp 里的路径、会话、客户端地址、运行环境(但读不到 znode 数据,也不能改数据,srst 会清零统计);白名单收紧为 ruok,srvr 后其它命令被拒绝;默认配置只有 srvr 可用。
AdminServer REST 接口实测:admin.enableServer=true + admin.serverPort 开启后 /commands 列出 28 个命令(HTML 链接),/commands/<name> 返回 JSON(stats、monitor、configuration、connections…);monitor 比四字命令 mntr 的指标更多;未知命令返回 HTTP 200 加 error 字段。
ZooKeeper 3.8.4 → 3.9.6 滚动升级实测:先 follower 后 leader,混合版本集群正常服务;写入最长中断分别为 450 / 25 / 761 ms(最后一次是 leader 重新选举);309 个确认的写入全部保留。
ZooKeeper 生产故障排查速查:真实造出的 5 类故障(没有多数派、连接数超限、写变慢、会话过期、请求超过 jute.maxbuffer),每类都给出客户端症状、第一条命令和服务端日志里的关键行,并链接到磁盘满、启动失败两篇的日志关键字。
ACL 权限控制实测:默认 world:anyone:cdrwa(任何人可读写删);digest 保护后匿名所有操作都是 NoAuth;CREATE / READ / WRITE / DELETE / ADMIN 五种权限各自控制什么(reader / writer / maker / deleter 的对照表)。
Digest、IP、Auth、SASL ACL 对比实测:auth 方案自动变成创建者的 digest id;digest id = user:base64(sha1(user:password)) 无盐,与 ZooKeeper 保存的完全一致;ip 方案按源 IP / CIDR 授权;sasl / x509 未启用提供者时设置 ACL 会 InvalidACLError;没人有 ADMIN 权限的节点 ACL 改不了。