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
Odpowiedz
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.
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
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
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
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"/>
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
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
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
Co masz na myśli mówiąc "połączony"? O ile nie "utrzymasz ich przy życiu", połączenia HTTP nie są trwałe. –