2015-12-21 133 views
7

在开发阶段使用zookeeper大约6个月后,尽管它工作正常,但其数据目录的大小增长到了6 GIG!而且还在增加。有些系统规范列举如下:Zookeeper自动清除不起作用

饲养员版本:3.4.6
数量的客户端: 数znodes的: 也...
有90个日志。 * dataDir/version-2中的文件
dataDir/version-2中没有快照。*文件!

通过谷歌搜索这个问题我在ZooKeeper Administrator's Guide页面的Advanced Configuration部分发现了自动清除选项。然后,我滚了动物园管理员使用以下conifguration(zoo.cfg):

滚动时间= 2000
DATADIR = /家庭/ faghani /软件/饲养员/ zkdata
CLIENTPORT = 2181
authProvider.1 =组织.apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthScheme = SASL
autopurge.snapRetainCount = 3
autopurge.purgeInterval = 1

即使purgeInterval过期很多次,即zookeeper数据目录的大小仍然是6G,没有文件被删除,也没有发生变化。这是ls -laht${dataDir}/version-2。这里有一个奇怪的地方,Nautilus表示数据目录的大小是6G,但是ls -laht表示它只有3.4G!

[email protected]:~/software/zookeeper/zkdata/version-2$ ls -laht 
total 3.4G 
-rw-rw-r-- 1 faghani faghani 65M Dec 20 10:09 log.1061d 
drwx------ 2 faghani faghani 4.0K Dec 20 10:09 . 
-rw-rw-r-- 1 faghani faghani 65M Dec 19 17:28 log.105f2 
-rw-rw-r-- 1 faghani faghani 65M Dec 15 18:37 log.105c1 
-rw-rw-r-- 1 faghani faghani 65M Dec 14 16:17 log.105bc 
-rw-rw-r-- 1 faghani faghani 65M Dec 9 18:08 log.10576 
drwx------ 3 faghani faghani 4.0K Dec 9 16:57 ..  
-rw-rw-r-- 1 faghani faghani 65M Dec 9 16:56 log.10565 
-rw-rw-r-- 1 faghani faghani 65M Dec 8 18:31 log.1048c 
and many more until ... 
-rw------- 1 faghani faghani 65M Sep 2 16:41 log.1d03 

此外下面的命令(如在Maintenance部分建议的)作出对数据目录中的文件没有影响。

java -cp zookeeper.jar:lib/slf4j-api-1.7.5.jar:lib/slf4j-log4j12-1.7.5.jar:lib/log4j-1.2.16.jar:conf org.apache.zookeeper.server.PurgeTxnLog <dataDir> <snapDir> -n <count> 

顺便说一句,我发现this question但遗憾的是在该页面没有它的解决方案。

问题:

1-快照。*文件在哪里?
2-如果SASL设置可以阻止自动清除? (我认为不是)
3-配置中出现错误?

编辑:看来,解决方案是围绕snapCount属性。该属性的默认值是100000,只需将其减小到非常小的数目即可。 10,并测试系统。

回答

0

如果您的问题与使用Solr运行ZK直接相关,那么阅读Solr邮件列表中的以下电子邮件链将很有用:Auto purge for ZK transaction logs in Solr

简而言之Solr中已经嵌入了ZK通过自己SolrZKServer运行不考虑autopurge.snapRetainCount=3也不 autopurge.purgeInterval=1

0

您可以使用zkCleanup.sh脚本是源文件夹内(./bin子文件夹)。如果你找不到它,你可以找到它here。这个脚本的使用:

zkCleanup.sh <snapshotDir> -n <count> 
for example: 
# ./zkCleanup.sh /tmp/zookeeper -n 6 

<snapshotDir>是动物园管理员快照文件的位置,在我的情况,我的快照文件夹中/tmp/zookeeper/version-2/

<count>是保留的日志&快照文件编号的<count>值通常应大于3.

有关更多详细信息,请参阅此文档:Ongoing Data Directory Cleanup

这可以作为ZooKeeper服务器计算机上的cron作业运行,以每天清理日志。就我而言,我清理每周一次:

0 7 * * 0 (cd /root/otter/zookeeper/zookeeper-3.4.10/bin && ./zkCleanup.sh /tmp/zookeeper -n 5) >> /tmp/zookeeper/cron.log 2>&1 

您可以通过crontab -e添加这一点,但请记住,根据您的需求来改变频率。