一、硬件资源优化
swapoff -a关闭交换分区,或在/etc/sysctl.conf中设置vm.swappiness=1(最小化交换分区使用),避免因内存不足导致频繁磁盘交换,降低性能。二、操作系统配置优化
/etc/sysctl.conf,添加以下参数以优化网络和文件系统性能:net.ipv4.tcp_max_syn_backlog=8192(增加TCP SYN队列长度,应对高并发连接)、net.core.somaxconn=4096(增大TCP连接监听队列大小)、vm.overcommit_memory=1(允许内存超额分配,避免Zookeeper因内存申请失败崩溃);执行sysctl -p使配置生效。三、Zookeeper配置参数调优
tickTime(心跳间隔)设置为2000毫秒(默认值,无需修改),作为Leader选举、会话超时的基本单位;initLimit(Follower初始化同步超时)设置为10(5个tick),syncLimit(Follower与Leader同步超时)设置为5(2.5个tick),适应网络延迟,避免不必要的超时。maxClientCnxns(单个客户端最大连接数)设置为60(默认10),防止单个客户端占用过多连接资源;启用自动清理功能,设置autopurge.snapRetainCount=3(保留最近3个快照)、autopurge.purgeInterval=1(每天自动清理一次),避免旧数据占用磁盘空间。dataDir(快照文件目录)与dataLogDir(事务日志目录)分开设置(如dataDir=/var/lib/zookeeper/snapshot、dataLogDir=/var/lib/zookeeper/log),减少磁盘I/O竞争,提升写入性能。四、JVM参数优化
-Xms8g -Xmx8g),避免堆过大导致Full GC时间过长(可能引发Zookeeper假死);初始堆与最大堆设置为相同值,避免堆动态调整带来的性能开销。-XX:+UseG1GC),针对堆内存较大的场景优化延迟;设置-XX:MaxGCPauseMillis=200(目标最大GC停顿时间200毫秒)、-XX:InitiatingHeapOccupancyPercent=70(堆使用率达70%时启动并发标记),减少GC对Zookeeper运行的影响。/etc/default/grub中添加transparent_hugepage=never,或在/etc/rc.local中执行echo never > /sys/kernel/mm/transparent_hugepage/enabled,减少JVM GC停顿和内存开销。五、集群架构优化
zoo.cfg,设置serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory,并调整线程数(nettyBossThreads=3、nettyWorkerThreads=20),提升高并发下的连接处理性能(Netty在NIO、低延迟方面优于传统NIO实现)。六、监控与维护
zk_packets_received请求包接收数、zk_packets_sent请求包发送数、zk_avg_latency平均延迟、zk_num_alive_connections活跃连接数),设置告警阈值(如延迟超过500ms、活跃连接数超过1000)。/var/lib/zookeeper/zookeeper.out),关注WARN(警告)和ERROR(错误)级别的日志(如SessionExpiredException会话过期、ConnectionLossException连接丢失),及时处理潜在问题(如客户端连接异常、节点宕机)。dataDir(快照文件)和dataLogDir(事务日志),可使用rsync或scp复制到异地存储;避免直接修改备份文件,以防数据 corruption。七、客户端与数据管理优化
ConnectionStateListener管理连接,避免频繁创建/销毁连接(连接创建开销大,且会导致Zookeeper节点压力增加)。/的变化),减少网络传输和处理开销;采用“长轮询+本地缓存”模式,仅在必要时触发Watcher。/app1/serviceA/instance1,而非多层嵌套)、层次分明(按业务模块划分顶级节点);严格控制znode数据大小(不超过100KB,最好控制在几KB以内),避免大znode导致内存消耗过高、网络传输延迟增加。