# "Füllstand" des Backlog abfragen.



## Dangermouse (22. Aug 2007)

Hallo Leute!

Dem ServerSocket kann man im Kontruktor die Größe der Warteschlage angeben, in der sich die anfragenden Clients befinfen. (In der Javadoc "backlog" genannt).

Um diesen Wert sinvoll zu gestalten würde ich gerne den "Füllstand" beobachten. Geht das?

Grüße

Stefan


----------



## jPat (23. Aug 2007)

Das musst du wohl selber mitzählen


----------



## Dante (23. Aug 2007)

ich glaube das backlog ist die Anzahl der Verbindungen welche der ServerSocket noch *nicht* angenommen hat. Die liesse sich imho relativ schwer selbst zählen.


----------



## Dangermouse (26. Aug 2007)

Dante hat gesagt.:
			
		

> ich glaube das backlog ist die Anzahl der Verbindungen welche der ServerSocket noch *nicht* angenommen hat. Die liesse sich imho relativ schwer selbst zählen.



Stimmt genau, Dante. Zählen ist da wohl nicht möglich. Was mir jetzt so als Lösung einfällt: Grad der Parallelisierung abschätzen und einen Wert festlegen.

Wäre aber schon cool, wenn man da irgendwie einsehen könnte. Vielleicht liegt die Lösung ja auch eine Schicht tiefer. Man müsste wissen wo diese Queue verwaltet wird.

Grüße

Stefan


----------



## Dante (26. Aug 2007)

die wird irgendwoe in der vm liegen.

Aber ich glaube der Füllstand ist garnicht so interessant, imho sollte er auch nicht als Skalierungs-Input sondern eher als Output verstanden werden.

Interessanter sind doch Messungen wie: Anzahl von Verbindungen pro Sekunde (Durchschnitt, maximum), Anzahl von bearbeiteten Verbindungen pro Sekunde (Durchschnitt, Maximum, intelligenter Durchschnitt von bearbeiteten Verbindungen unter großer Last)

Von diesen Werten sollte nun die Anzahl von überhaupt möglichen aktiven Verbindungen abhängen, um den Server nicht zu schlachten müssen diese ja begrenzt werden. Das Backlog wird also eigentlich nur benutzt, wenn der Server komplett ausgelastet wird (manchmal landen warscheinlich doch ein paar verbindungen drin, weil der Server grad was anderes als die Annahme neuer Verbindungen zu tun hat, aber die sollten da schnell wieder rauskommen).

Das Backlog sollte nun also so groß gewählt werden, dass alle enthaltenen Verbindungen in sinnvoller Zeit bearbeitet werden können. Definieren muss man also 'sinnvolle' Zeit. Sagen wir eine Sekunde. Das Backlog sollte also maximal so groß sein, wie die Anzahl der Verbindungen die im Durchschnitt pro Sekunde verarbeitet werden. 

Warscheinlich würde man es aber eher etwas kleiner wählen. Jede angenommene Verbindung benötigt ja ressourcen, auch wenn sie nich nicht zur Applikation durchgestellt werden kann.


----------

