2010-02-05 46 views
7

我在Tomcat Server 5.5.17上部署了Java/Java EE Web应用程序。我想知道连接到服务器的客户端数量。我们如何找到它?找出连接到tomcat服务器的数量

+0

“连接”是什么意思?除非你“保持活力”,否则HTTP连接不是持久的。 – 2010-02-06 14:52:56

回答

15

最可靠的方法是在netstat中搜索ip.addr.of.srv:port。下面是基于Windows的例子(抱歉,没有Linux的大师在这里;))

netstat -np tcp | find "12.34.56.78:80"

通过IP Tomcat所在侦听和80通过港口里的Tomcat监听的更换12.34.56.78

这实际上不是一个编程问题,因此我投票将此问题迁移到serverfault.com

+0

我使用的是Apache Geronimo,它在Web控制台中显示当前繁忙线程(不是会话)的数量,因此它是可编程的。对于你的解决方案,你应该有netstat -np tcp |找到“12.34.56.78:80”|找到“ESTABLISHED”,所以你不包括像FIN_WAIT,SYN_SENT等非建立状态。 – ericp 2010-02-06 03:47:21

+0

count(threads)!= count(connections)。可能有线程池和/或线程用于其他目的(守护进程,后台任务,清理等)的手段。至于你的netstat建议,这确实更有意义。 – BalusC 2010-02-06 03:52:43

+5

我在CentOS中用''''netstat -an | grep:80 | wc -l'''',如[文章](https://www.exchangecore.com/blog/find-number-active-connections-linux-using-netstat/)所述 – AntonioOtero 2015-02-24 18:32:25

2

请参阅Tomcat Manager下的部分,了解计算Web应用程序中会话的示例。

计算连接数量可能有点困难。 Tomcat为每个请求启动一个新的线程,最多达到“maxProcessors”。超过这个数字,请求排队到最大的“acceptCount”。超过这个数字的请求被拒绝/丢弃(或崩溃,我不知道)。这些属性可以使用JConsole - steps here进行监控。上面提到的具体属性是HTTP Connector的属性。

编辑1:查看CoyoteConnector和AJP Connector的源代码后,有一个名为curProcessors的私有属性,用于跟踪当前正在使用的处理器的数量。但是,将curProcessors变量添加到连接器的mbeans文件似乎并不显示JConsole显示中的当前值。
注意:我修改的mbeans XML文件位于tomcat \ server \ lib \ catalina.jar中,位于jar中的org \ apache \ catalina \ connector目录中。以下是我添加的条目示例:
<attribute name="curProcessors" description="the number of processors currently in use" type="int"/>

+0

你能告诉我会话数量和连接数量的区别吗?我想我需要知道连接到tomcat服务器的数量。 – Thunderhashy 2010-02-05 22:32:16

+1

我从API文档中引用了会话 - 提供了一种方法,用于跨多个页面请求识别用户或访问网站并存储有关该用户的信息。会话持续一段指定的时间段,跨多个连接或来自用户的页面请求。 基本上,用户可以为不同的请求提供1个会话和多个连接。或者,如果您考虑使用AJAX请求加载不同部分的页面,则加载每个部分会在使用相同会话(如果有)的情况下创建到服务器的不同连接。 – Thimmayya 2010-02-05 23:18:17

2

如果你需要弄清楚什么,每个连接都这样做,使用在Linux上

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

如果有三个连接,你会看到

LISTEN TIME_WAIT TIME_WAIT

如果您只想计算处于TIME_WAIT状态的连接

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