Узнайте количество подключений к серверу tomcat

У меня есть веб-приложение Java/Java EE, развернутое на сервере Tomcat 5.5.17. Я хочу знать количество клиентов, которые подключены к серверу. Как мы можем это выяснить?

3 ответов


наиболее надежным способом было бы искать ip.addr.of.srv:port на netstat. Вот пример на основе Windows (извините, здесь нет гуру Linux;))

netstat -np tcp | find "12.34.56.78:80"

заменить 12.34.56.78 по IP, где Tomcat слушает и 80 по порту, где Tomcat слушает.

это на самом деле не проблема программирования, поэтому я проголосовал за перенос этого вопроса на serverfault.com.


см. раздел Менеджер Tomcat для примера подсчета сеансов в webapp.

Подсчет количества соединений, вероятно, немного сложнее. Tomcat запускает новый поток для каждого запроса, поступающего до максимума "maxProcessors". За пределами этого числа запросы ставятся в очередь до максимума "acceptCount".Запросы за пределами этого числа отклоняются / отбрасываются (или сбои, я не уверен). Свойства можно отслеживать с помощью JConsole - шаги здесь. Конкретные свойства, упомянутые выше, являются свойствами HTTP Connector.

EDIT 1: после просмотра исходного кода CoyoteConnector и AJP Connector существует частное свойство curProcessors, которое отслеживает количество используемых в настоящее время процессоров. Однако добавление переменной curProcessors в файл mbeans для соединителей, похоже, не отображает текущее значение на дисплее JConsole.
Примечание: XML-файл mbeans, который я изменил, был в tomcat\server\lib\catalina.jar и находится в каталоге org\apache\catalina\connector в jar. Ниже приведен пример записи, которую я добавил:
<attribute name="curProcessors" description="the number of processors currently in use" type="int"/>


и если вам нужно понять, что делает каждое соединение, используйте это в linux

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

Если есть три соединения , вы увидите

слушать TIME_WAIT, прежде чем TIME_WAIT, прежде чем

и если вы хотите только подсчитать соединения, которые находятся в состоянии TIME_WAIT

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