Ich habe eine Java/Java EE-Webanwendung, die auf Tomcat Server 5.5.17 eingesetzt wird. Ich möchte die Anzahl der Clients wissen, die mit dem Server verbunden sind. Wie können wir das herausfinden?
Antworten
Zu viele Anzeigen?Der zuverlässigste Weg wäre die Suche nach ip.addr.of.srv:port
en netstat
. Hier ist das Windows-basierte Beispiel (sorry, kein Linux-Guru hier ;) )
netstat -np tcp | find "12.34.56.78:80"
Ersetzen Sie 12.34.56.78
nach IP, auf der Tomcat lauscht und 80
nach Port, an dem Tomcat lauscht.
Dies ist eigentlich kein Programmierproblem, daher habe ich dafür gestimmt, diese Frage nach serverfault.com .
Und wenn Sie herausfinden wollen, was die einzelnen Verbindungen tun, verwenden Sie dies unter Linux
netstat -an | grep :8080 | awk '{print $6}'
Wenn es drei Verbindungen gibt, sehen Sie
LISTEN ZEIT_WARTEN ZEIT_WARTEN
Und wenn Sie nur die Verbindungen zählen wollen, die sich im TIME_WAIT-Zustand befinden
netstat -an | grep :8080 | grep TIME_WAIT | wc -l
Siehe den Abschnitt unter Tomcat-Manager für ein Beispiel zum Zählen der Sitzungen in einer Webanwendung.
Die Anzahl der Verbindungen zu zählen, ist wahrscheinlich etwas schwieriger. Tomcat startet einen neuen Thread für jede eingehende Anfrage bis zu einer maximalen Anzahl von maxProcessors
. Bei Überschreitung dieser Zahl werden die Anfragen in eine Warteschlange gestellt, bis zu einem Maximum von acceptCount
. Anfragen, die über diese Zahl hinausgehen, werden abgelehnt/gelöscht (oder stürzen ab, ich bin mir nicht sicher). Die Eigenschaften können mit einer JConsole überwacht werden: Schritte hier . Die oben genannten spezifischen Eigenschaften sind Eigenschaften des HTTP-Anschluss .
EDIT 1:
Nachdem ich den Quellcode von CoyoteConnector und AJP Connector durchgesehen habe, gibt es eine private Eigenschaft namens curProcessors
die die Anzahl der derzeit genutzten Prozessoren anzeigt. Das Hinzufügen der Variable curProcessors zur mbeans-Datei für Konnektoren scheint jedoch nicht den aktuellen Wert in der JConsole-Anzeige anzuzeigen.
Hinweis: Die von mir geänderte mbeans-XML-Datei befand sich im Tomcat \server\lib\catalina.jar und ist in der Organisation \apache\catalina\connector Verzeichnis im jar. Unten sehen Sie ein Beispiel für den Eintrag, den ich hinzugefügt habe:
<attribute name="curProcessors"
description="the number of processors currently in use"
type="int"/>