Как очистить журналы 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.