在开发阶段使用zookeeper大约6个月后,虽然它工作正常,但其数据目录的大小增长到6 GIG!而且还在增加.下面列出了一些系统规范:
zookeeper版本:3.4.6
客户端数量:<10
个znode数量:<400
还...
dataDir/version-2中
有90个log.*文件,dataDir/version-2 中没有快照.*文件!
通过谷歌搜索此问题我在页面的高级配置部分找到了自动清除选项ZooKeeper Administrator's Guide.然后我使用以下conifguration(zoo.cfg)将zookeeper输出:
tickTime = 2000
dataDir =/home/faghani/software/zookeeper/zkdata
clientPort = 2181
authProvider.1 = org.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!
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
Run Code Online (Sandbox Code Playgroud)
此外,以下命令(如" 维护"部分中所述)对数据目录中的文件没有任何影响.
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>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我发现了这个问题,但遗憾的是在该页面中没有解决方案.
问题:
1-快照.*文件在哪里?
2-如果SASL设置可能会妨碍自动清除?(我认为没有)
3-配置出了什么问题?
编辑:似乎解决方案是围绕snapCount属性.此属性的默认值为100000,只需将其减小到非常小的数字,例如10,然后测试系统.
您可以使用源文件夹(子文件夹)内的zkCleanup.sh脚本。./bin如果您找不到它,您可以在这里找到它。该脚本的用法:
zkCleanup.sh <snapshotDir> -n <count>
for example:
# ./zkCleanup.sh /tmp/zookeeper -n 6
Run Code Online (Sandbox Code Playgroud)
<snapshotDir>是zookeeper快照文件位置,就我而言,我的快照文件位于文件夹中/tmp/zookeeper/version-2/
<count>是保留的日志和快照文件数量,其值<count>通常应大于3。
有关更多详细信息,您可以参考此文档:正在进行的数据目录清理。
这可以作为 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
Run Code Online (Sandbox Code Playgroud)
您可以添加此功能,crontab -e但请记住根据您的要求更改频率。
小智 0
如果您的问题与使用 Solr 运行 ZK 直接相关,那么阅读 Solr 邮件列表中的以下电子邮件链将会很有用:Auto purge for ZK transaction log in Solr。
简而言之,Solr 嵌入了 ZK,通过它们自己的运行SolrZKServer,但没有考虑到autopurge.snapRetainCount=3或
autopurge.purgeInterval=1。
| 归档时间: |
|
| 查看次数: |
3945 次 |
| 最近记录: |