2010-02-05 9 views
7

J'ai une application Web Java/Java EE déployé sur serveur Tomcat 5.5.17. Je veux connaître le nombre de clients connectés au serveur. Comment pouvons-nous le découvrir?Découvrez le nombre de connexions au serveur tomcat

+0

Qu'entendez-vous par "connecté"? À moins que vous ne les conserviez, les connexions HTTP ne sont pas persistantes. –

Répondre

15

moyen le plus fiable serait de rechercher ip.addr.of.srv:port dans netstat. Voici l'exemple basé sur Windows (désolé, pas de gourou de Linux ici;))

netstat -np tcp | find "12.34.56.78:80"

Remplacer 12.34.56.78 par IP où Tomcat écoute sur et 80 par le port sur lequel Tomcat écoute.

Ceci est en fait pas un problème de programmation, d'où j'ai voté pour migrer cette question serverfault.com.

+0

J'utilise Apache Geronimo et il affiche dans la console web le nombre de threads actuellement occupés (pas de sessions) donc il est programmable. Pour votre solution, vous devriez avoir netstat -np tcp | find "12.34.56.78:80" | trouver "ESTABLISHED" de sorte que vous n'incluez pas les états non établis comme FIN_WAIT, SYN_SENT, etc. – ericp

+0

count (threads)! = count (connexions). Il peut y avoir des moyens d'un pool de threads et/ou des threads utilisés à d'autres fins (démons, backgroundtasks, nettoyage, etc). Quant à vos suggestions netstat, cela fait en effet plus de sens. – BalusC

+5

J'ai accompli cela dans CentOS avec '' '' netstat -an | grep: 80 | wc -l'''' comme décrit dans ce [article] (https://www.exchangecore.com/blog/find-number-active-connections-linux-using-netstat/) – AntonioOtero

2

Voir la section sous Tomcat Manager pour un exemple de compter les sessions dans une webapp.

Le comptage du nombre de connexions est probablement un peu plus difficile. Tomcat démarre un nouveau thread pour chaque requête arrivant jusqu'à un maximum de "maxProcessors". Au-delà de ce nombre, les demandes sont mises en file d'attente jusqu'à un maximum de «acceptCount». Les demandes au-delà de ce nombre sont refusées/abandonnées (ou se bloque, je ne suis pas sûr). Les propriétés peuvent être surveillées en utilisant un JConsole - steps here. Les propriétés spécifiques mentionnées ci-dessus sont les propriétés du HTTP Connector. Après avoir parcouru le code source de CoyoteConnector et AJP Connector, il existe une propriété privée appelée curProcessors qui suit le nombre de processeurs actuellement utilisés. Toutefois, l'ajout de la variable curProcessors au fichier mbeans pour les connecteurs ne semble pas afficher la valeur actuelle dans l'affichage JConsole.
Remarque: Le fichier XML mbeans que j'ai modifié se trouvait dans tomcat \ server \ lib \ catalina.jar et se trouve dans le répertoire org \ apache \ catalina \ connector du fichier jar. Voici un exemple de l'entrée I ajouté:
<attribute name="curProcessors" description="the number of processors currently in use" type="int"/>

+0

Pouvez-vous me dire la différence entre le nombre de sessions et le nombre de connexions? Je pense que j'ai besoin de connaître le nombre de connexions à un serveur Tomcat. – Thunderhashy

+1

Je cite des documents API- Session - Fournit un moyen d'identifier un utilisateur à travers plus d'une demande de page ou de visiter un site Web et de stocker des informations sur cet utilisateur. La session persiste pendant une période spécifiée, sur plusieurs connexion ou demande de page de l'utilisateur. Fondamentalement, un utilisateur peut avoir une session et plusieurs connexions pour différentes demandes. Ou, si vous considérez une page qui charge différentes sections en utilisant des requêtes AJAX, le chargement de chaque section créera une connexion différente au serveur tout en utilisant la même session (le cas échéant). – Thimmayya

2

Et si vous avez besoin de comprendre ce que chaque connexion fait, l'utiliser sur linux

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

S'il y a trois connexions, vous verrez

LISTEN TIME_WAIT TIME_WAIT

et si vous ne voulez compter les connexions qui sont en état TIME_WAIT

netstat -an | grep :8080 | grep TIME_WAIT | wc -l 
Questions connexes