Zookeeper事务日志控制100M范围测试

文章目录

一、概述

     本文档主要用于记录“测试Zookeeper服务其事务日志大小控制在100M范围内”的数据。Zookeeper分布式服务中,其日志共有3种类型,分别是:log日志、快照和事务日志。Zookeeper 3.4.0版本中,可以通过在配置文件(conf/zoo.cfg)中添加对应的选项从而达到自动清理事务日志的效果。

     使用zookeeper提供的客户端工具(共有3种方式连接zookeeper服务器, zk客户端脚本工具, c源码API和java源码API)得知,当前环境上面的Zookeeper服务其版本为: 3.4.5版本,是满足通过配置文件的适配而达到自动清理日志的功能的。如图1所示。
在这里插入图片描述
图1 使用zkCli.sh客户端工具登录Zookeeper服务器

     此外,也可以使用Zookeeper发行包中自带的日志清理脚本工具zkCleanup.sh,如下图2所示。(本次主要测试配置文件适配的效果)
在这里插入图片描述
图2 Zookeeper发行包自带的脚本工具列表

二、测试

     Zookeeper的事务日志自动清理功能中,主要涉及如下3个参数配置。如图3所示。
在这里插入图片描述
图3 Zookeeper配置文件zoo.cfg


     下面一一介绍

· autopurge.snapRetainCount=3
在进行自动日志清理时候,保留存储的快照日志版本数量, 默认3个,最小也为3

· autopurge.purgeInterval=1
该选项默认为0,表示不进行自动日志清理功能。若需要支持该功能,则需填写一个大于0的数字,单位是h。现将其修改为1h,表示每隔1h进行日志的清理操作,同时保留最新的3个快照文件(备注:快照文件和事务日志是息息相关的,默认写10W次事务日志则写一个快照,同时事务日志是较先于写快照日志,在清理日志时候,会保留快照日志所多对应的事务日志文件。因此,理论上而言,日志清理过后, 快照日志和事务日志都是最新版本的3个文件)。

· preAllocSize=30720
用于设置预分配的事务日志文件大小值,单位KB,默认是64MB。为了能够满足其事务日志大小不超过100MB的要求,需要对这个preAllocSize进行修改, 现在将其修改为默认31MB。这样理论上“事务日志文件(31MB)* 3 = 93MB”,能够满足需求。\

三、测试步骤

     开启zookeeper服务,写一个脚本,让kafka不间断的连接zookeeper(测试Zookeeper服务的自动日志清理功能,需要保证有连续数据写日志文件。 根据zookeeper的事务日志生成机制,需要让kafka不断重连zookeeper以及读写请求)。通过观察zookeeper的事务日志数据存放目录下面文件数量情况,已判断其配置是否生效。

· 快照目录:/home/ssd/zookeeper/
· 事务日志目录:/home/ssd/log/zookeeper/
当zookeeper服务起来后,会在这两个文件下创建一个名为“version-2”的目录,具体的日志文件保存在version-2目录下。\

测试组一:

记录时间点:2019-09-03 15:13
快照日志
total 4.6M
-rw-r–r– 1 root root 379K Sep 3 14:05 snapshot.13d37
-rw-r–r– 1 root root 442K Sep 3 14:24 snapshot.279eb
-rw-r–r– 1 root root 442K Sep 3 14:48 snapshot.3fd8f
-rw-r–r– 1 root root 442K Sep 3 15:14 snapshot.44a68
-rw-r–r– 1 root root 406K Sep 3 15:37 snapshot.5c9ad
-rw-r–r– 1 root root 406K Sep 3 15:58 snapshot.72a31

事务日志
total 85M
-rw-r–r– 1 root root 31M Sep 3 14:05 log.1
-rw-r–r– 1 root root 31M Sep 3 14:24 log.13d39
-rw-r–r– 1 root root 31M Sep 3 14:48 log.279ed
-rw-r–r– 1 root root 31M Sep 3 14:53 log.3fd91
-rw-r–r– 1 root root 31M Sep 3 15:37 log.44a69
-rw-r–r– 1 root root 31M Sep 3 15:58 log.5c9af
-rw-r–r– 1 root root 31M Sep 3 16:10 log.72a33

观察日志情况:观察时间点:2019-09-03 16:15
快照日志
total 3.3M
-rw-r–r– 1 root root 406K Sep 3 15:37 snapshot.5c9ad
-rw-r–r– 1 root root 406K Sep 3 15:58 snapshot.72a31
-rw-r–r– 1 root root 406K Sep 3 16:11 snapshot.7fe3b

事务日志
[root@HikvisionOS version-2]# ls -lh
total 42M
-rw-r–r– 1 root root 31M Sep 3 15:37 log.44a69
-rw-r–r– 1 root root 31M Sep 3 15:58 log.5c9af
-rw-r–r– 1 root root 31M Sep 3 16:11 log.72a33
-rw-r–r– 1 root root 31M Sep 3 16:14 log.7fe3d

     结论:通过观察Zookeeper服务的快照日志目录和事务日志对应目录中文件的数量变化,可得知,该配置是生效的。能够满足其日志大小小于100MB的需求。


测试组二:

记录时间点:2019-09-03 16:17 (起始时间)
快照日志
total 3.3M
-rw-r–r– 1 root root 406K Sep 3 15:37 snapshot.5c9ad
-rw-r–r– 1 root root 406K Sep 3 15:58 snapshot.72a31
-rw-r–r– 1 root root 406K Sep 3 16:11 snapshot.7fe3b\

事务日志
total 52M
-rw-r–r– 1 root root 31M Sep 3 15:37 log.44a69
-rw-r–r– 1 root root 31M Sep 3 15:58 log.5c9af
-rw-r–r– 1 root root 31M Sep 3 16:11 log.72a33
-rw-r–r– 1 root root 31M Sep 3 16:28 log.7fe3d\

观察日志情况:观察时间点:2019-09-03 17:07(中间观察时间)
快照日志
total 4.1M
-rw-r–r– 1 root root 406K Sep 3 15:37 snapshot.5c9ad
-rw-r–r– 1 root root 406K Sep 3 15:58 snapshot.72a31
-rw-r–r– 1 root root 406K Sep 3 16:11 snapshot.7fe3b
-rw-r–r– 1 root root 406K Sep 3 16:33 snapshot.97821
-rw-r–r– 1 root root 406K Sep 3 16:48 snapshot.a6b42

事务日志
total 78M
-rw-r–r– 1 root root 31M Sep 3 15:37 log.44a69
-rw-r–r– 1 root root 31M Sep 3 15:58 log.5c9af
-rw-r–r– 1 root root 31M Sep 3 16:11 log.72a33
-rw-r–r– 1 root root 31M Sep 3 16:33 log.7fe3d
-rw-r–r– 1 root root 31M Sep 3 16:48 log.97823
-rw-r–r– 1 root root 31M Sep 3 17:04 log.a6b44

观察日志情况:观察时间点:2019-09-03 17:22 (最终观察时间)
快照日志
total 3.3M
-rw-r–r– 1 root root 406K Sep 3 16:33 snapshot.97821
-rw-r–r– 1 root root 406K Sep 3 16:48 snapshot.a6b42
-rw-r–r– 1 root root 406K Sep 3 17:09 snapshot.bcf47

事务日志
total 49M
-rw-r–r– 1 root root 31M Sep 3 16:33 log.7fe3d
-rw-r–r– 1 root root 31M Sep 3 16:48 log.97823
-rw-r–r– 1 root root 31M Sep 3 17:09 log.a6b44
-rw-r–r– 1 root root 31M Sep 3 17:20 log.bcf49

结论:从测试观察结果可以看到,满足事务日志和快照日志小于100MB的需求。
附加:


测试组三:

在这里插入图片描述
图4 Zookeeper日志自动清理测试
结论:第三组测试的主要目的是为了知道,zookeeper在经过自定义preAllocSize(预分配事务日志文件大小)之后,当在下一次(每隔1h)进行自动日志清理的时候,当前事务日志对应存储目录(dataLogDir)空间大小不会超过100MB。且在约90MB时将被清理。

附加:snapCount=100000 //指定每次快照之间的事务数(zookeeper.snapCount). 当zookeeper服务器重启之后需要恢复其状态,恢复时两大时间因素,分别为”恢复状态而读取快照的时间”和”快照启动后所发生的事务的执行时间”

四、结论

     从两组测试的结果分析来看,3.4.5版本的Zookeeper通过配置文件的适配修改是能够满足日志的自动清理工作的,同时通过配置preAllocSize ,能够实现日志文件不大于100MB的需求。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享