面向 Debian 的 ZooKeeper 资源优化实操指南
一 操作系统与硬件层优化
二 ZooKeeper 配置参数优化
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper/data
dataLogDir=/var/lib/zookeeper/log
maxClientCnxns=60
autopurge.snapRetainCount=3
autopurge.purgeInterval=24
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888
上述参数需结合延迟、会话规模与ZNode数量压测后微调。三 JVM 与垃圾回收调优
export JAVA_OPTS="-Xms8G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
堆与 GC 需结合延迟目标与对象生命周期压测校准,避免凭经验设置。四 监控 维护与容量规划
五 快速检查清单
| 优化项 | 关键值或动作 | 验证方式 |
|---|---|---|
| 磁盘 | dataDir 与 dataLogDir 分离,使用 SSD | iostat -x 1 观察 await、svctm |
| 文件句柄 | nofile ≥ 65536,systemd 同步设置 | ulimit -n / systemctl show |
| 内存与 swap | vm.swappiness=0;堆大小 ≤ 内存的1/3 | free -m、jstat -gc |
| GC | 使用 G1 GC 并固定 -Xms/-Xmx | jstat -gc、GC 日志 |
| 自动清理 | snapRetainCount=3,purgeInterval=24h | 观察磁盘使用是否周期性回落 |
| 监控告警 | 部署 Prometheus + Grafana | 延迟、连接数、磁盘阈值告警 |