评估思路与分层定位
关键指标与阈值建议
| 维度 | 关键指标 | 如何判断瓶颈 | 建议阈值或动作 |
|---|---|---|---|
| 延迟 | zk_avg/min/max_latency | 延迟上升且伴随排队,多为处理能力不足或后端I/O/网络慢 | 当平均延迟 > 10 × tickTime 报警;优先排查I/O、网络、GC |
| 排队 | zk_outstanding_requests | 持续 > 0 且增长,说明请求处理不过来 | 持续 > 10 报警;结合延迟与FD/连接数定位 |
| 连接 | zk_num_alive_connections、zk_max_file_descriptor_count / zk_open_file_descriptor_count | 连接数接近FD上限或突增后抖动 | 使用率 > 85% 报警;提升 ulimit -n,检查连接泄漏 |
| 角色/同步 | Mode、zk_followers、zk_synced_followers、zk_pending_syncs | leader 的 pending_syncs 持续 > 0 或 synced_followers 少于预期 | 检查网络、磁盘、follower GC/负载;必要时调整超时 |
| 数据规模 | zk_znode_count、zk_watch_count、zk_approximate_data_size | 节点/监听过多导致内存与网络压力 | 控制 znode 深度与数量;精简 watch;评估分片/拆分 |
| 流量 | zk_packets_received / zk_packets_sent | 与业务峰值不匹配或突发尖峰 | 结合业务读写比(常见约 20% 写 / 80% 读)与带宽观察 |
| 系统资源 | CPU、内存、Swap、磁盘 I/O、网络 | Swap>0、await/svctm 高、丢包/重传 | 禁用或降低 vm.swappiness(如 0);ZK 尽量独占 SSD;同机避免 I/O 争用 |
| JVM | Heap、GC 暂停 | Full GC 频繁、暂停长 | 堆不超过物理内存的约 1/3;优先 G1 GC;减少停顿目标 |
系统化排查步骤
常见瓶颈与优化要点