CentOS系统解决Zookeeper资源争用问题的综合方案
dataDir(快照文件)与dataLogDir(事务日志)挂载到不同物理磁盘,减少两者竞争同一磁盘IO资源。/etc/sysctl.conf添加vm.swappiness=0(完全禁用),或设置为较低值(如10),并通过swapoff -a命令临时关闭。/etc/security/limits.conf,添加zookeeper soft nofile 65536、zookeeper hard nofile 65536(替换为实际用户),并重启服务生效。tickTime:设置心跳间隔(默认2000ms),建议保持默认或根据网络延迟调整(如网络较差时可设为3000ms),作为超时计算的基础单位。initLimit:Leader与Follower初始同步的超时时间(默认10*tickTime),建议设为10-20(如10),确保慢节点能完成初始同步。syncLimit:Leader与Follower同步数据的超时时间(默认2*tickTime),建议设为5-10(如5),避免因网络抖动导致不必要的Leader切换。maxClientCnxns参数限制单个客户端IP的最大连接数(默认无限制),防止恶意或异常客户端占用过多资源(如设为60)。autopurge.snapRetainCount=3(保留最近3个快照)、autopurge.purgeInterval=1(每天自动清理一次),避免旧快照和事务日志占用磁盘空间。zookeeper-env.sh中的ZOOMEM参数。-XX:+UseG1GC),并配置-XX:MaxGCPauseMillis=100(目标最大GC停顿时间),减少GC对Zookeeper处理请求的影响。zkServer.sh status查看集群角色(Leader/Follower),echo stat | nc localhost 2181查看连接数、请求延迟等指标。zookeeper-env.sh中添加-Dcom.sun.management.jmxremote相关参数,通过JConsole或Prometheus+Grafana可视化监控内存使用、GC次数、连接数等指标,及时发现资源瓶颈。zookeeper.out或log4j日志中的WARN/ERROR信息(如DiskSpaceExhausted、ConnectionLoss),快速定位资源争用问题。