Zookeeper 从诞生之初火爆到今天是有原因的,值得我们每一个网友深入学习!
Zookeeper 提供了强大的 API,或者说是源语集。基于此,我们一般都很容易的能够上手 Zookeeper,但是,想深入研究和学习,对相关的配置文件属性还是有必要一探究竟的。
乘着十一空闲期间,把我常用的一些 Zookeeper 配置属性总结下来,分享给大家!
clientPort:客户端连接server的端口,即对外服务端口,一般设置为2181
dataDir:存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。
tickTime:ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime
dataLogDir:事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能
globalOutstandingLimit:最大请求堆积数。默认是1000。ZK运行的时候, 尽管server已经 没有空闲来处理更多的客户端请求了,但是还是允许客户端将请求提交到服务器上来,以提高吞吐性能。当然,为了防止Server内存 溢出,这个请求堆积数还是需要限制下的。(Java system property: zookeeper.globalOutstandingLimit.)
preAllocSize:预先开辟磁盘空间,用于后续写入事务日志。默认是64M,每个事务日志大小就是64M。如果ZK的快照频率较大的话,建议适当减小 这个参数。(Java system property: zookeeper.preAllocSize)
snapCount:每进行snapCount次事务日志输出后,触发一次快照(snapshot),此时,ZK会生成一个snapshot.文件,同时创建一个新的事务日志文件log.。 默认是100000.(真正的代码实现中,会进行一定的随机数处理,以避 免 所 有 服 务 器 在 同 一 时 间 进 行 快 照 而 影 响 性 能 )(Java system property: zookeeper.snapCount)
traceFile:用于记录所有请求的log,一般调试过程中可以使用,但是生产环境不建 议使用,会严重影响性能。(Java system property:? requestTraceFile)
maxClientCnxns:单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60如果设置为0,那么表明不作任何限制。请注意这个限制的使用范围,仅仅是单台客户端机器与单台ZK服务器之间的连接数限制,不是针对指定客户端IP,也不是ZK集群的连接数限制,也不是单台ZK对所有客户端的 连接数限制。
clientPortAddress:对于多网卡的机器,可以为每个IP指定不同的监听端口。默认情况是所 有IP都监听 clientPort指定的端口。 New in 3.3.0
minSessionTimeou:tmaxSessionTimeout
Session超时时间限制,如果客户端设置的超时时间不在这个范围,那么会被强制设置为最大或最小时间。默认的Session超时时间是在2* tickTime ~ 20 * tickTime 这 个 范 围 New in 3.3.0
fsync.warningthresholdms:事务日志输出时,如果调用fsync方法超过指定的超时时间,那么会在日志中输出警告信息,默认是1000ms
autopurge.purgeInterval:清理任务的时间间隔,单位为hours
autopurge.snapRetainCount:zkserver启动时会开启一个org.apache.zookeeper.server.DatadirCleanupManager的线程,用于清理”过期”的snapshot文件和其相应的txn log file,此参数用于设定需要被retain保留的文件个数(从QuorumPeerMain跟踪代码)
electionAlg:选举算法,默认为3,可以选择(0,1,2,3), 0表示使用原生的UDP(LeaderElection), 1表示使用费授权的UDP 2表示使用授权的UDP(AuthFastLeaderElection) 3基于TCP的快速选举(FastLeaderElection)
initLimit:Leader与learner建立连接中 socket通讯read所阻塞的时间(initLimit * tickTime) 如果是Leaner数量较多或者leader的数量很大, 可以增加此值
SyncLimit:learner与leader建立连接中,socket通讯read阻塞的时间.其中包括数据同步/数据提交等
peerType:zkserver 类型 observer 观察者, participant参与者 ,默认为参与者
leaderServes:系统属性,zookeeper.leaderServes leader是否接受client请求,默认为yes即leader可以接受client的连接,在zk cluster 环境中,当节点数为>3时,建议关闭
cnxTimeout:系统属性,zookeeper.cnxTimeout leader选举时socket连接打开的时长,只有在electionAlg=3有效
skipACL:系统属性:zookeeper.skipACL 默认为no,是否跳过ACL检查
forceSync:系统属性,zookeeper.forceSync 默认yes 在update执行之前,是否强制对操作立即持久写入txn log文件.关闭此选项,会造成服务器失效后,尚未持久化的数据丢失
jute.maxbuffer:每个节点最大数据量,是默认是1M。这个限制必须在server和client 端都进行设置才会生效。
这些都是比较常用的配置属性,再使用时,大家要注意对应的版本。版本不通过,配置属性可能略有差异!
: » Zookeeper 的配置文件常用配置属性大全
原创文章,作者:jamestackk,如若转载,请注明出处:https://blog.ytso.com/252146.html