动物园管理员自动清除不起作用



在开发阶段使用Zookeeper大约6个月后,虽然它工作正常,但其数据目录的大小增长到6 GIG!并且仍在增加。下面列出了一些系统规格:

动物园管理员版本:3.4.6
客户端数量: <10
Znode数量:<400
也。。。
dataDir/version-2
中有 90 个日志。 dataDir/version-2 中没有快照 * 文件!

通过谷歌搜索此问题,我在ZooKeeper Administrator's Guide页面的高级配置部分找到了自动清除选项。然后我使用以下针叶(zoo.cfg(将动物园管理员推出:

刻度时间=2000
dataDir=/home/faghani/software/zookeeper/zkdata
客户端端口 = 2181
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthScheme=sasl
autopurge.snapRetainCount=3
自动清除.清除间隔=1

但是即使purgeInterval多次过期也没有发生任何变化,即动物园管理员数据目录的大小仍然是6G,没有文件被删除。这是关于${dataDir}/version-2 ls -laht。这里有一个奇怪的点,Nautilus说数据目录的大小是6G,但ls -laht说它只是3.4G!

faghani@node255:~/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  

此外,以下命令(如维护部分中的建议(对数据目录中的文件没有影响。

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>

顺便说一句,我找到了这个问题,但不幸的是,该页面中没有解决方案。

问题:

1- 快照*文件在哪里?
2- 如果 SASL 设置会阻碍自动清除?(我认为没有(
3-配置有问题吗?

编辑:似乎解决方案是围绕snapCount属性的东西。此属性的默认值为 100000,只需将其减小到非常小的数字,例如 10,然后测试系统。

您可以使用源文件夹(./bin子文件夹(内的 zkCleanup.sh 脚本。如果你找不到它,你可以在这里找到它。此脚本的用法:

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

<snapshotDir>是 Zookeeper 快照文件位置,就我而言,我的快照文件位于文件夹 /tmp/zookeeper/version-2/

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

有关更多详细信息,您可以参考此文档:正在进行的数据目录清理。

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

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添加它,但请记住根据您的要求更改频率。

如果您的问题与使用 Solr 运行 ZK 直接相关,那么阅读 Solr 邮件列表中的以下电子邮件链会很有用: 在 Solr 中自动清除 ZK 事务日志。

简而言之,Solr已经嵌入了ZK,通过他们自己的SolrZKServer运行,这既没有考虑到autopurge.snapRetainCount=3也没有考虑。 autopurge.purgeInterval=1 .

一些有用的信息,运行以下命令对我有用[动物园管理员版本:3.5.5]。参考 https://zookeeper.apache.org/doc/r3.6.1/zookeeperTools.html#zkCleanup

zkCleanup.sh -n 5

zKCleanup 脚本存在于 zookeeper bin 文件夹中。[/阿帕奇动物园管理员-3.5.5-bin/bin]

自动清除变量信息可在以下位置找到:https://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#sc_advancedConfiguration

最新更新