Узнайте количество подключений к серверу 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