2016-03-29 7 views
0

In einem Test-Setup (Einzel-Client-Server - localhost mit Gatling, Erstellen und Schließen von Verbindungen während des Tests) hält mein einziger Knoten Zookeeper alle TCP-Verbindungen offen, bis der Testlauf abgeschlossen ist.Wann werden Zookeeper-TCP-Verbindungen serverseitig aufgeräumt?

Während des Testlaufs in den ersten 2 Minuten, erstelle ich wiederholt bis zu 10 Clientverbindungen parallel, die für ca. 30 Sekunden aktiv sind und dann ihre Verbindung wieder schließen. Zu jedem Zeitpunkt sind also in den ersten 2 Minuten bis zu 10 Verbindungen aktiv. Dann wird der Test für weitere 8 Minuten fortgesetzt, währenddessen nur 1 Clientverbindung aktiv ist.

Client-Seite: mit Kurator 2.9.1 und 3.4.6 Zookeeper

Zookeeper Knoten: 3.4.8-1--1

AFAIK den Kunden ordnungsgemäß ihre Verbindung (Nachweis schließen: Ich sehe, es ist vergänglich Knoten gelöscht werden, wenn ein LS-/ path tun/to/Ephemerals, zookeeper logs indicate Verbindungen als auch)

jedoch geschlossen ist, wenn der cons Befehl an den zookeeper Knoten sendet, hält die Zahl der TCP-Verbindungen in der ersten steigenden 2 Minuten, bis zu insgesamt 126. Es bleibt dann bei dieser Nummer bis Das Testrou ist vollständig, in diesem Moment sind alle Verbindungen auf einmal verschwunden.

Ich erwartete, dass die Anzahl der Verbindungen viel niedriger, wie 10 bis 20, und stabil während der 'aktiven' Phase des Tests war. Stattdessen steigt es weiter, solange ich neue Verbindungen öffne/schließe.

Während der ersten 2 Minuten zeigen die zookeeper Protokolle Öffnen und Schließen von Verbindungen:

2016-03-25 15:54:04,305 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:[email protected]] - Accepted socket connection from /0:0:0:0:0:0:0:1:60758 
2016-03-25 15:54:04,321 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:[email protected]] - Client attempting to establish new session at /0:0:0:0:0:0:0:1:60758 
2016-03-25 15:54:04,324 - INFO [SyncThread:0:[email protected]] - Established session 0x153ae440b2e000f with negotiated timeout 10000 for client /0:0:0:0:0:0:0:1:60758 
2016-03-25 15:54:04,324 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:[email protected]] - got auth packet /0:0:0:0:0:0:0:1:60758 
2016-03-25 15:54:04,325 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:[email protected]] - auth success /0:0:0:0:0:0:0:1:60758 
2016-03-25 15:54:04,326 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:[email protected]] - got auth packet /0:0:0:0:0:0:0:1:60758 
2016-03-25 15:54:04,328 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:[email protected]] - auth success /0:0:0:0:0:0:0:1:60758 
2016-03-25 15:54:04,803 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:[email protected]] - Accepted socket connection from /127.0.0.1:37236 
2016-03-25 15:54:04,804 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:[email protected]] - Client attempting to establish new session at /127.0.0.1:37236 
2016-03-25 15:54:04,805 - INFO [SyncThread:0:[email protected]] - Established session 0x153ae440b2e0010 with negotiated timeout 10000 for client /127.0.0.1:37236 
2016-03-25 15:54:04,828 - INFO [ProcessThread(sid:0 cport:12182)::[email protected]] - Processed session termination for sessionid: 0x153ae440b2e0010 
2016-03-25 15:54:04,830 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:[email protected]] - Closed socket connection for client /127.0.0.1:37236 which had sessionid 0x153ae440b2e0010 

Dann erst am Ende des Laufs, für jede Verbindung I

2016-03-25 15:57:44,002 - INFO [SessionTracker:[email protected]] - Expiring session 0x153ae440b2e006c, timeout of 10000ms exceeded 
2016-03-25 15:57:44,003 - INFO [SessionTracker:[email protected]] - Expiring session 0x153ae440b2e00b8, timeout of 10000ms exceeded 
2016-03-25 15:57:44,003 - INFO [SessionTracker:[email protected]] - Expiring session 0x153ae440b2e0094, timeout of 10000ms exceeded 
... 
2016-03-25 15:57:44,014 - INFO [ProcessThread(sid:0 cport:12182)::[email protected]] - Processed session termination for sessionid: 0x153ae440b2e006c 
2016-03-25 15:57:44,014 - INFO [ProcessThread(sid:0 cport:12182)::[email protected]] - Processed session termination for sessionid: 0x153ae440b2e00b8 
2016-03-25 15:57:44,015 - INFO [ProcessThread(sid:0 cport:12182)::[email protected]] - Processed session termination for sessionid: 0x153ae440b2e0094 
... 

(siehe Anmerkung dass das obige Protokoll von einem manuell unterbrochenen Lauf genommen wurde, aber das Verhalten ist dasselbe, wenn ich den Lauf auf 16:02 abgeschlossen hätte)

Ich arbeite mit der folgenden Konfiguration (excer pt):

tickTime=2000 
maxSessionTimeout=10000 
minSessionTimeout=4000 
maxClientCnxns=0 

ist die steigende Anzahl der Verbindungen zu dem Testaufbau im Zusammenhang, oder die sie aus der Art und Weise Zookeeper arbeitet?

+0

Sind Sie sicher, dass die tatsächlichen tcp-Verbindungen während des gesamten Tests geöffnet sind? Was zeigt "netstat -anp --tcp"? Es kann nur ein Tierpfleger sein, der die Verbindungen überwacht. – Petter

+0

Ja, ich bin mir sicher, dass die Verbindungen tatsächlich da sind. In der Tat ergab eine nähere Untersuchung unseres clientseitigen Codes, dass die Verbindung auf eine falsche Art und Weise heruntergefahren wurde (die tatsächliche Verbindung. Schließen wurde weggelassen ). Es war also kein Problem mit Zookeeper oder Gatling. – JeanMarc

Antwort

0

Es stellte sich heraus, dass es sich um einen Fehler in unserem Client-Code handelte. Die Verbindungen wurden nicht richtig geschlossen, nur die Hälfte der Bereinigung wurde durchgeführt (kurzlebige Knoten wurden gelöscht, aber die Client-Verbindung wurde tatsächlich nicht wirklich geschlossen).

Entschuldigung, dass Sie Ihre Zeit in Anspruch nehmen.

Verwandte Themen