2015-12-21 11 views
7

Nach etwa 6 Monaten der Verwendung von Tierpfleger in der Entwicklungsphase, obwohl es funktioniert, aber die Größe seines Datenverzeichnis wuchs auf 6 GIG! und es nimmt immer noch zu. Einige der Systemspezifikationen sind nachfolgend aufgeführt:Zookeeper Auto-Purge funktioniert nicht

zookeeper Version: 3.4.6
Anzahl der Kunden: Anzahl von znodes: auch ...
gibt es 90 log. * Dateien in DataDir/Version-2
Es gibt keinen Snapshot. * Datei in DataDir/Version-2!

durch Google-Suche für dieses Problem, das ich Auto-Purge Option in Advanced Configuration Abschnitt der ZooKeeper Administrator's Guide Seite gefunden. Dann rollte ich zookeeper aus mit der folgenden conifguration (zoo.cfg):

Ticker = 2000
dataDir =/home/faghani/Software/Tierpfleger/zkdata
client = 2181
authProvider.1 = org .apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthScheme = sasl
autopurge.snapRetainCount = 3
autopurge.purgeInterval = 1

Aber es wurde keine Veränderung auch aufgetreten, wenn purgeInterval viele Male bekommen abgelaufen ist, das heißt immer noch die Größe von zookeeper Datenverzeichnis ist 6G und keine Datei gelöscht wurde. Hier ist ein ls -laht auf ${dataDir}/version-2. Es gibt einen seltsamen Punkt hier, Nautilus sagt, dass die Größe des Datenverzeichnisses 6G ist, aber ls -laht sagt, es ist nur 3,4 G!

[email protected]:~/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 

auch der folgende Befehl ein (wie in Maintenance Abschnitt vorgeschlagen) machte keine Auswirkungen auf den Dateien im Datenverzeichnis.

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> 

By the way, fand ich this question aber leider gibt es keine Lösung für sie in dieser Seite.

Fragen:

1- Wo sind die Snapshot * Dateien.?
2- Wenn SASL-Einstellungen das automatische Löschen behindern können? (Ich denke nein)
3- Ist in der Konfiguration etwas falsch gelaufen?

EDIT: Es scheint, dass die Lösung etwas rund um die Immobilie snapCount ist. Der Standardwert dieser Eigenschaft ist 100000, verringern Sie sie auf eine sehr kleine Zahl, z. 10, und testen Sie das System.

Antwort

0

Wenn Ihr Problem direkt mit dem Ausführen von ZK mit Solr verbunden ist, dann wäre es nützlich, die folgende E-Mail-Kette in Solrs Mail-Liste zu lesen: Auto purge for ZK transaction logs in Solr.

Auf den Punkt gebracht Solr hat ZK eingebettet ihre eigenen SolrZKServer laufen, durch die in nicht-Konto autopurge.snapRetainCount=3 noch autopurge.purgeInterval=1 nimmt.

0

können Sie, dass zkCleanup.sh Skript verwenden, die innerhalb des Quellordner (./bin Unterordner) ist. Falls Sie es nicht finden können, finden Sie es here. Die Verwendung dieses Skript:

zkCleanup.sh <snapshotDir> -n <count> 
for example: 
# ./zkCleanup.sh /tmp/zookeeper -n 6 

<snapshotDir> ist die zookeeper Snapshot-Dateien Lage, in meinem Fall sind meine Snapshot-Dateien in Ordner /tmp/zookeeper/version-2/

<count> ist die einbehaltenen log & Snapshot-Datei Zahlen, Der Wert von <count> sollte in der Regel größer als 3 sein.

Weitere Einzelheiten finden Sie in diesem Dokument: Ongoing Data Directory Cleanup.

Dies kann als Cron-Job auf den ZooKeeper-Server-Computern ausgeführt werden, um die Protokolle täglich zu bereinigen. In meinem Fall reinige ich einmal bis jede Woche:

0 7 * * 0 (cd /root/otter/zookeeper/zookeeper-3.4.10/bin && ./zkCleanup.sh /tmp/zookeeper -n 5) >> /tmp/zookeeper/cron.log 2>&1 

Sie können dies mit Hilfe crontab -e aber denken Sie daran, die Frequenz entsprechend Ihrer Anforderung zu ändern.