Linux下ZooKeeper内存设置指南
ZooKeeper的内存使用主要集中在JVM堆内存,需通过修改启动脚本(zkServer.sh或zkEnv.sh)设置初始堆内存(-Xms)和最大堆内存(-Xmx)。
-Xms4g -Xmx4g),避免堆内存动态扩展带来的性能开销(扩展时JVM会触发Full GC,导致服务停顿)。zkServer.sh中修改JVMFLAGS环境变量(部分版本也可在zkEnv.sh中设置),示例如下:export JVMFLAGS="-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200" 除堆内存外,还需调整以下参数以提升内存使用效率:
-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC),并通过-XX:MaxGCPauseMillis设置最大GC暂停时间(如200ms),平衡吞吐量与延迟。vm.swappiness设置为0(彻底禁用Swap):sudo sysctl vm.swappiness=0 sudo echo "vm.swappiness=0" >> /etc/sysctl.conf # 永久生效 /etc/security/limits.conf:zookeeper soft nofile 65536 zookeeper hard nofile 65536 jstat -gcutil <pid>(查看GC情况)、jmap -heap <pid>(查看堆内存分布)或Prometheus+Grafana(可视化监控)跟踪内存指标,及时调整参数。dataDir(数据存储)和datalogDir(事务日志)指向不同的高速磁盘(如SSD),减少I/O竞争,间接提升内存使用效率。