|-------------|--------------------------------------------|---------------------------------|-------------------------|-----------------------------------|
| | 参数名 | 默认值 | 详解 | 备注 |
| 基础配置 | 参数名 | 含义说明 | 默认值 | 备注 |
| 基础配置 | tickTime | ZooKeeper基本时间单位(毫秒),用于心跳和超时计算 | 2000 | 最小会话超时时间为2*tickTime |
| 基础配置 | dataDir | 数据快照和myid文件存储路径 | - | 必须指定,建议独立磁盘 |
| 基础配置 | clientPort | 客户端连接端口 | 2181 | 核心服务端口 |
| 基础配置 | initLimit | Follower连接Leader并完成同步的最大tick数 | 5 | 集群初始化超时时间 |
| 基础配置 | syncLimit | Leader与Follower心跳超时tick数 | 2 | 网络延迟高时需要调大 |
| 基础配置 | server.x | 集群节点配置:server.id=host:port:port | - | port1是通信端口,port2是选举端口 |
| 数据存储配置 | dataLogDir | 事务日志存储路径 | dataDir相同路径 | 强烈建议使用独立磁盘以提高性能 |
| 数据存储配置 | preAllocSize | 事务日志预分配大小(KB) | 65536 | 减少磁盘分配开销 |
| 数据存储配置 | snapCount | 触发快照的事务数阈值 | 100000 | 达到该值后创建新快照 |
| 数据存储配置 | autopurge.snapRetainCount | 保留的快照数量 | 3 | 自动清理旧快照 |
| 数据存储配置 | autopurge.purgeInterval | 清理任务间隔(小时) | 1 | 0表示禁用自动清理 |
| 数据存储配置 | fsync.warningthresholdms | fsync警告阈值(毫秒) | 1000 | 超过该值输出警告日志 |
| 数据存储配置 | fsync.warningthresholdms | fsync警告阈值(毫秒) | 1000 | 超过该值输出警告日志 |
| 网络与连接控制 | maxClientCnxns | 单IP最大客户端连接数 | 60(3.5.3前)/2000(3.5.3+) | 防止单个IP耗尽连接 |
| 网络与连接控制 | maxCnxns | 单服务器总连接数(不区分IP) | 0(无限制) | 3.5+引入的额外防护 |
| 网络与连接控制 | clientPortAddress | 客户端端口绑定的IP地址 | 0.0.0.0 | 可指定特定网卡 |
| 网络与连接控制 | secureClientPort | SSL安全连接端口 | - | 启用后支持混合模式 |
| 网络与连接控制 | client.portUnification | 客户端端口同时接受SSL连接 | FALSE | 3.5.5+ |
| 网络与连接控制 | admin.serverPort | Admin服务端口 | 8080 | 提供监控接口 |
| 网络与连接控制 | admin.enableServer | 是否启用Admin服务 | TRUE | 可设为false禁用 |
| 网络与连接控制 | zookeeper.serverCnxnFactory | 连接工厂类 | NIOServerCnxnFactory | 使用TLS时需改为NettyServerCnxnFactory |
| 集群与高可用 | group.x | 节点分组配置(用于分层次选举) | - | 3.5+支持 |
| 集群与高可用 | weight.x | 节点权重配置 | - | 影响选举投票权重 |
| 集群与高可用 | leaderServes | Leader是否处理客户端请求 | yes | 设为no可提升写入性能 |
| 集群与高可用 | peerType | 节点类型(observer/participant) | participant | Observer不参与选举 |
| 集群与高可用 | syncEnabled | Observer是否持久化事务日志 | TRUE | 3.4.6+,设为false可提升性能但增加恢复时间 |
| 集群与高可用 | multiAddress.enabled | 启用多地址支持 | FALSE | 3.6.0+,提升网络层可用性 |
| 集群与高可用 | multiAddress.reachabilityCheckTimeoutMs | 多地址可达性检查超时 | 1000ms | 3.6.0+ |
| 性能调优参数 | globalOutstandingLimit | 全局最大请求队列长度 | 1000 | 防止内存溢出 |
| 性能调优参数 | maxSessionTimeout | 最大会话超时时间(毫秒) | 20*tickTime | 客户端可设置的最大值 |
| 性能调优参数 | minSessionTimeout | 最小会话超时时间(毫秒) | 2*tickTime | 客户端可设置的最小值 |
| 性能调优参数 | zookeeper.commitProcessor.numWorkerThreads | CommitProcessor工作线程数 | CPU核心数 | 3.5.0+ |
| 性能调优参数 | zookeeper.nio.numSelectorThreads | NIO selector线程数 | √(CPU核心数/2) | 3.5.0+,连接数多时增加 |
| 性能调优参数 | zookeeper.nio.numWorkerThreads | NIO worker线程数 | 2*CPU核心数 | 3.5.0+ |
| 性能调优参数 | maxBatchSize | 批量提交的最大事务数 | 1000 | 3.6.0+ |
| 性能调优参数 | flushDelay | 提交日志刷盘延迟(毫秒) | 0(禁用) | 3.6.0+,高写入场景可设为10-20ms |
| 性能调优参数 | maxWriteQueuePollTime | 刷盘等待时间 | flushDelay/3 | 3.6.0+ |
| 安全配置 | sslQuorum | 启用集群间SSL加密通信 | FALSE | 3.5.5+,需配合Netty使用 |
| 安全配置 | ssl.keyStore.location | SSL密钥库路径 | - | 服务端SSL配置 |
| 安全配置 | ssl.keyStore.password | 密钥库密码 | - | 支持加密密码 |
| 安全配置 | ssl.trustStore.location | SSL信任库路径 | - | 验证客户端证书 |
| 安全配置 | authProvider.x | 认证提供者类 | - | 如SASLAuthenticationProvider |
| 安全配置 | skipACL | 跳过ACL权限检查 | no | 开发环境可设为yes提升性能 |
| 安全配置 | kerberos.removeHostFromPrincipal | Kerberos认证移除主机名 | FALSE | 3.5+ |
| 安全配置 | kerberos.removeRealmFromPrincipal | Kerberos认证移除域 | FALSE | 3.5+ |
| 安全配置 | enforceQuota | 强制配额检查 | FALSE | 3.7.0+,超限拒绝请求 |
| 监控与管理 | metricsProvider.className | 指标提供者类 | - | 3.6.0+,如PrometheusMetricsProvider |
| 监控与管理 | metricsProvider.httpPort | 指标服务端口 | 7000 | 3.6.0+ |
| 监控与管理 | 4lw.commands.whitelist | 四字命令白名单 | - | 如"stat,ruok,conf",*表示全部启用 |
| 监控与管理 | cnxTimeout | Leader选举连接超时 | 5秒 | 选举期间socket超时 |
| 3.5+动态配置 | dynamicConfigFile | 动态配置文件路径 | - | 3.5.0+,支持运行时修改集群 |
| 3.5+动态配置 | reconfigEnabled | 启用动态重配置 | FALSE | 3.5.0+ |
| 3.5+动态配置 | standaloneEnabled | 启用单机模式 | TRUE | 3.5.0+,设为false防止误启动单节点 |
| 3.5+动态配置 | localSessionsEnabled | 启用本地会话 | FALSE | 3.5.0+,减少Leader压力 |
| 3.5+动态配置 | localSessionsUpgradingEnabled | 自动升级本地会话 | FALSE | 3.5.0+,需配合localSessionsEnabled |
| 3.6+新特性 | requestThrottleLimit | 请求限流阈值 | 0(禁用) | 3.6.0+,限制最大未处理请求数 |
| 3.6+新特性 | requestThrottleStallTime | 请求等待最大时间 | 100ms | 3.6.0+ |
| 3.6+新特性 | requestThrottleDropStale | 丢弃过期请求 | TRUE | 3.6.0+,连接关闭或超时的请求 |
| 3.6+新特性 | maxConcurrentSnapSyncs | 最大并发快照同步数 | 10 | 3.6.0+ |
| 3.6+新特性 | maxConcurrentDiffSyncs | 最大并发差异同步数 | 100 | 3.6.0+ |
| 3.7+新特性 | enforce.auth.enabled | 强制客户端认证 | FALSE | 3.7.0+,未认证拒绝操作 |
| 3.7+新特性 | enforce.auth.schemes | 强制认证方式列表 | - | 3.7.0+,如sasl,ssl |
| 3.7+新特性 | watchManagerName | Watcher管理器实现 | WatchManager | 3.6.0+,可选WatchManagerOptimized |
| 3.9+新特性 | ssl.sslProvider | SSL提供者 | JDK | 3.9.0+,可选OpenSSL等原生库 |
重要说明
-
版本差异 :不同版本默认值可能变化,如
maxClientCnxns在3.5.3后从60改为2000 -
动态配置:3.5.0+支持动态修改集群成员,无需重启
-
性能关键 :
dataLogDir必须独立磁盘,tickTime和syncLimit对稳定性影响大 -
安全配置 :生产环境建议启用SASL或SSL,并设置
skipACL=no -
监控建议:3.6.0+务必启用Prometheus指标导出
所有参数均可通过修改conf/zoo.cfg文件并重启服务生效。Java系统属性参数需在启动命令中添加-Dkey=value指定。