2015-07-29 15 views
7

Zookeeper sta rapidamente inserendo i suoi file binari interni in tutto il nostro ambiente di produzione. Secondo: http://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html e http://dougchang333.blogspot.com/2013/02/zookeeper-cleaning-logs-snapshots.html questo è un comportamento previsto e si deve chiamare org.apache.zookeeper.server.PurgeTxnLog regolarmente a ruotare la sua cacca.Come eliminare i registri di zookeeper con PurgeTxnLog?

Quindi:

% 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 

ma ottengo:

% ls -l1rt /tmp/zookeeper/version-2/ 
... all the existing logs plus a new directory 
/tmp/zookeeper/version-2/version-2 

Sto facendo qualcosa di sbagliato?

guardiano dello zoo-3.4.6/

+0

Mi piacerebbe +2 questo poiché mi ha fatto ridere oggi! Grazie per quello. –

+0

La directory dei tuoi dati probabilmente è/tmp/zookeeper not/tmp/zookeeper/version-2 (la versione 2 è una cosa interna di zk) ... Suppongo che non funzioni per me o – Claudio

+0

Forse - tutto quello che so è quella cartella ha riempito il filesystem, il che è irragionevole. – user48956

risposta

10

ZooKeeper dispone ora di una funzionalità Autopurge a partire dalla 3.4.0. Date un'occhiata a https://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html

Si dice che si può utilizzare autopurge.snapRetainCount e autopurge.purgeInterval


autopurge.snapRetainCount

Nuovo in 3.4.0: Quando è attivata, la funzione automatica di spurgo ZooKeeper mantiene l'autopurge .snapRetainCount rispettivamente le istantanee più recenti ei registri delle transazioni corrispondenti in dataDir e dataLogDir e cancella il resto. Predefinito è 3. Il valore minimo è 3.


autopurge.purgeInterval

Nuovo in 3.4.0: L'intervallo di tempo in ore in cui il compito di spurgo deve essere innescato. Impostare su un numero intero positivo (1 e sopra) per abilitare l'eliminazione automatica. Il valore predefinito è 0.

4

Dal momento che non sto sentendo una correzione tramite Zookeeper, questa è stata una soluzione semplice:

COUNT=6 
DATADIR=/tmp/zookeeper/version-2/ 
ls -1drt ${DATADIR}/* | head --lines=-${COUNT} | xargs sudo rm -f 

necessario eseguire una volta al giorno da un lavoro cron o Jenkins per evitare che lo zookeeper esploda.

Problemi correlati