动物园管理员的内部二进制文件在我们的生产环境中迅速拉屎。根据:http://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html和http://dougchang333.blogspot.com/2013/02/zookeeper-cleaning-logs-snapshots.html,这是预期的行为,您必须定期调用org.apache.zookeeper.server.PurgeTxnLog来旋转它的便便。
所以:
% ls -l1rt /tmp/zookeeper/version-2/
total 314432
-rw-r--r-- 1 root root 67108880 Jun 26 18:00 log.1
-rw-r--r-- 1 root root 947092 Jun 26 18:00 snapshot.e99b
-rw-r--r-- 1 root root 67108880 Jun 27 05:00 log.e99d
-rw-r--r-- 1 root root 1620918 Jun 27 05:00 snapshot.1e266
... many more
% sudo java -cp zookeeper-3.4.6.jar::lib/jline-0.9.94.jar:lib/log4j-1.2.16.jar:lib/netty-3.7.0.Final.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:conf \
org.apache.zookeeper.server.PurgeTxnLog \
/tmp/zookeeper/version-2 /tmp/zookeeper/version-2 -n 3但我明白:
% ls -l1rt /tmp/zookeeper/version-2/
... all the existing logs plus a new directory
/tmp/zookeeper/version-2/version-2 我做错了什么吗?
动物园管理员-3.4.6/
发布于 2015-11-24 17:32:27
ZooKeeper现在有一个3.4.0的自动更新功能。看看https://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html
上面说你可以使用autopurge.snapRetainCount和autopurge.purgeInterval
autopurge.snapRetainCount
在3.4.0中新增:如果启用,ZooKeeper自动清除功能将分别在dataDir和dataLogDir中保留autopurge.snapRetainCount最近的快照和相应的事务日志,并删除其余的。默认值为3,最小值为3。
autopurge.purgeInterval
新的3.4.0:必须触发清除任务的时间间隔(以小时为单位)。设置为正整数(1及以上)以启用自动清除。默认为0。
发布于 2015-07-31 00:18:11
由于我没有通过动物园管理员听到修复,这是一个简单的解决办法:
COUNT=6
DATADIR=/tmp/zookeeper/version-2/
ls -1drt ${DATADIR}/* | head --lines=-${COUNT} | xargs sudo rm -f应该每天跑一次从一个cron的工作或詹金斯,以防止动物园管理员爆炸。
发布于 2022-03-24 06:00:37
您需要指定参数dataDir和snapDir,并将其配置为dataDir在动物园管理员的.properties文件中。
如果您的配置如下所示。
dataDir=/data/zookeeper如果要保存最后10个日志/快照,则需要像下面这样调用PurgeTxnLog (3.5.9版)
java -cp zookeeper.jar:lib/slf4j-api-1.7.5.jar:lib/slf4j-log4j12-1.7.5.jar:lib/log4j-1.2.17.jar:conf org.apache.zookeeper.server.PurgeTxnLog /data/zookeeper /data/zookeeper -n 10https://stackoverflow.com/questions/31689252
复制相似问题