Как очистить журналы zookeeper с помощью PurgeTxnLog?
Zookeeper быстро какает свои внутренние двоичные файлы по всей нашей производственной среде. Согласно: http://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html и http://dougchang333.blogspot.com/2013/02/zookeeper-cleaning-logs-snapshots.html это ожидаемое поведение, и вы должны вызвать org.апаш.зверолов.сервер.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
Am Я делаю что-то не так?
zookeeper-3.4.6/
2 ответов
ZooKeeper теперь имеет функцию Autopurge с 3.4.0. Взгляните на https://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html
Он говорит, что вы можете использовать autopurge.snapRetainCount
и autopurge.purgeInterval
autopurge.snapRetainCount
новое в 3.4.0: если включено, функция автоматической очистки ZooKeeper сохраняет автосохранение.snapRetainCount последние снимки и соответствующие журналы транзакций в dataDir и dataLogDir соответственно и удаляет остальные. По умолчанию 3. Минимальное значение 3.
autopurge.purgeInterval
New в 3.4.0: интервал времени в часах, для которого должна быть запущена задача очистки. Установите положительное целое число (1 и выше), чтобы включить автоматическую очистку. По умолчанию 0.
поскольку я не слышу исправления через Zookeeper, это было простое решение:
COUNT=6
DATADIR=/tmp/zookeeper/version-2/
ls -1drt ${DATADIR}/* | head --lines=-${COUNT} | xargs sudo rm -f
должен запускаться один раз в день с задания cron или Дженкинса, чтобы предотвратить взрыв zookeeper.