2010-02-05 15 views
7

Mam aplikację WWW Java/Java EE wdrożoną na serwerze Tomcat 5.5.17. Chcę poznać liczbę klientów podłączonych do serwera. Jak możemy to odkryć?Sprawdź liczbę połączeń z serwerem Tomcat

+0

Co masz na myśli mówiąc "połączony"? O ile nie "utrzymasz ich przy życiu", połączenia HTTP nie są trwałe. –

Odpowiedz

15

Najbardziej niezawodny sposób na poszukiwanie ip.addr.of.srv:port w netstat. Oto przykład na bazie Windows (sorry, nie Linux guru tutaj;))

netstat -np tcp | find "12.34.56.78:80"

Wymień 12.34.56.78 przez IP gdzie Tomcat nasłuchuje na porcie i 80 przez gdzie Tomcat nasłuchuje.

To nie jest problem programistyczny, dlatego zagłosowałem za przeniesieniem tego pytania na serverfault.com.

+0

Używam Apache Geronimo i wyświetla w konsoli internetowej liczbę bieżących zajętych wątków (nie sesji), dzięki czemu można je programować. Dla twojego rozwiązania powinieneś mieć netstat -np tcp | znajdź "12.34.56.78:80" | znajdź "ESTABLISHED", więc nie dołączaj stanów nieudanych, takich jak FIN_WAIT, SYN_SENT itp. – ericp

+0

count (wątki)! = count (połączenia). Mogą istnieć środki do tworzenia wątków i/lub wątków używanych do innych celów (demonów, zadań tła, czyszczenia itd.). Co do twoich sugestii netstat, to ma więcej sensu. – BalusC

+5

Dokonałem tego w CentOS przy użyciu '' '' netstat -an | grep: 80 | wc -l'''' jak opisano w tym [artykule] (https://www.exchangecore.com/blog/find-number-active-connections-linux-using-netstat/) – AntonioOtero

2

Zobacz przykład pod numerem Tomcat Manager dla zliczenia sesji w aplikacji internetowej.

Zliczanie liczby połączeń jest prawdopodobnie nieco trudniejsze. Tomcat uruchamia nowy wątek dla każdego żądania przychodzącego do maksimum "maxProcessors". Poza tym numerem, żądania są ustawiane w kolejce do maksimum "acceptCount". Prośby wykraczające poza tę liczbę są odrzucane/odrzucane (lub zawieszane, nie jestem pewien). Właściwości można monitorować za pomocą urządzenia JConsole - steps here. Specyficzne właściwości wymienione powyżej są właściwościami HTTP Connector.

EDIT 1: Po pominie kodu źródłowego CoyoteConnector i AJP Connector, jest własnością prywatną nazywa curProcessors który śledzi liczbę procesorów w użyciu. Jednak dodanie zmiennej curProcessors do pliku mbeans dla konektorów nie wydaje się wyświetlać bieżącej wartości na ekranie JConsole.
Uwaga: Plik XML mbeans, który zmodyfikowałem, znajdował się w tomcat \ server \ lib \ catalina.jar i znajduje się w katalogu org \ apache \ catalina \ connector w słoiku. Poniżej znajduje się przykład wpisu, który dodałem:
<attribute name="curProcessors" description="the number of processors currently in use" type="int"/>

+0

Czy możesz mi powiedzieć, jaka jest różnica między liczbą sesji a liczbą połączeń? Myślę, że muszę znać liczbę połączeń z serwerem tomcat. – Thunderhashy

+1

Cytuję z sesji API docs- Sesja - umożliwia identyfikację użytkownika w więcej niż jednym żądaniu strony lub odwiedzeniu witryny sieci Web oraz przechowywanie informacji o tym użytkowniku. Sesja trwa przez określony czas, na więcej niż jedno połączenie użytkownika lub na żądanie użytkownika. Zasadniczo użytkownik może mieć 1 sesję i wiele połączeń dla różnych żądań. Lub, jeśli weźmiesz pod uwagę stronę, która ładuje różne sekcje za pomocą żądań AJAX, ładowanie każdej sekcji spowoduje utworzenie innego połączenia z serwerem podczas korzystania z tej samej sesji (jeśli taka jest). – Thimmayya

2

A jeśli chcesz dowiedzieć się, co każdy gra robi, użyj tego na linux

netstat -an | grep :8080 | awk '{print $6}' 

Jeśli istnieją trzy połączenia, widać

POSŁUCHAJ TIME_WAIT TIME_WAIT

Jeśli chcesz policzyć tylko połączenia w stanie TIME_WAIT:

netstat -an | grep :8080 | grep TIME_WAIT | wc -l 
Powiązane problemy