"Füllstand" des Backlog abfragen.

Status
Nicht offen für weitere Antworten.

Dangermouse

Mitglied
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
 

Dante

Bekanntes Mitglied
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

Mitglied
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

Bekanntes Mitglied
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.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben