2016-05-25 8 views
1

Wir verwenden Aerospike in unseren Projekten und seltsames Problem gefangen. Wir haben einen 3-Knoten-Cluster und nach einigen Knoten Neustart funktioniert es nicht mehr. Also machen wir Test um unser Problem zu erklärenAerospike Cluster nicht sauber zur Verfügung Blöcke

Wir machen Testcluster. 3 Knoten Replikation count = 2

Hier ist unsere Namespace Config

namespace test{ 
replication-factor 2 
memory-size 100M 
high-water-memory-pct 90 
high-water-disk-pct 90 
stop-writes-pct 95 
single-bin true 
default-ttl 0 
storage-engine device { 
cold-start-empty true 
file /tmp/test.dat 
write-block-size 1M 
} 

Wir 100Mb Testdaten danach schreiben wir haben diese Situation

enter image description here verfügbar pct gleich etwa 66% und Disk Usage über 34%

Alle gut: slight_smile:

Aber wir hielten einen Knoten. Nach der Migration sehen wir, dass verfügbar pct = 49% und Festplattennutzung 50%

Return Knoten und nach der Migration clustern sehen wir, dass Festplattennutzung vorheriges etwa 32% wurde, aber verfügbar pct auf alte Knoten bleiben 49%

enter image description here Stop-Knoten ein weiteres Mal

verfügbar pct = 31%

Wiederholen Sie noch einmal bekommen wir diese Situation verfügbar pct = 0%

Unser Cluster abgestürzt, Clients erhalten AerospikeException: Fehlercode 8: Server-Speicherfehler

So wie wir zur Verfügung pct reinigen?

+0

Bitte können Sie defrag-q in Ihrem Protokoll grep und posten Sie die Ergebnisse? –

+0

Ich glaube, Sie Namespace ist zu klein für die Standard-Post-Write-Warteschlange. Versuchen Sie, dies in der Konfiguration auf 0 zu setzen und den Test zu wiederholen. – kporter

+0

kporter wahrscheinlich genagelt es. Die Standardpostschreibwarteschlange würde 256 × 1 MB (Schreibblockgröße) pro Gerät sein. Blöcke in der Nachschreibwarteschlange können nicht defragmentiert werden. Es auf 8 oder etwas kleiner zu senken sollte helfen. – Meher

Antwort

3

Wenn Ihre defrag-q leer ist (und Sie sehen können, ob es sich um das Protokollieren der Protokolle handelt), besteht das Problem wahrscheinlich darin, dass Ihr Namespace kleiner ist als Ihre Post-Write-Queue. Blöcke auf der post-write-queue sind nicht für die Defragmentierung geeignet, und so würden Sie avail-pct Tendenz ohne Defragmentierung, um den Speicherplatz zurückzugewinnen sehen. Standardmäßig ist die post-write-queue 256 Blöcke und in Ihrem Fall würde das also 256MB entsprechen. Wenn Ihr Namespace kleiner ist als das, sehen Sie, dass avap-pct weiter abfällt, bis Sie auf stop-writes klicken. Sie können die Größe der Post-Write-Warteschlange reduzieren dynamisch (dh kein Neustart erforderlich) mit dem folgenden Befehl, hier schlage ich vor 8 Blöcke:

asinfo -v 'set-config:context=namespace;id=<NAMESPACE>;post-write-queue=8' 

Wenn Sie mit diesem Wert zufrieden sind, sollten Sie Ihre aerospike.conf ändern zu Fügen Sie es so ein, dass es nach einem Neustart des Knotens beibehalten wird.

Verwandte Themen