【发布时间】:2010-02-05 19:12:05
【问题描述】:
我在 Tomcat Server 5.5.17 上部署了一个 Java/Java EE Web 应用程序。我想知道连接到服务器的客户端数量。我们怎样才能找到它?
【问题讨论】:
-
“连接”是什么意思?除非您“保持活动”它们,否则 HTTP 连接不是持久的。
标签: java sql-server tomcat5.5
我在 Tomcat Server 5.5.17 上部署了一个 Java/Java EE Web 应用程序。我想知道连接到服务器的客户端数量。我们怎样才能找到它?
【问题讨论】:
标签: java sql-server tomcat5.5
最可靠的方法是在netstat 中搜索ip.addr.of.srv:port。这是基于 Windows 的示例(抱歉,这里没有 Linux 大师;))
netstat -np tcp |找到“12.34.56.78:80”
用 Tomcat 监听的 IP 替换 12.34.56.78,用 Tomcat 监听的端口替换 80。
这实际上不是编程问题,因此我投票将这个问题迁移到serverfault.com。
【讨论】:
netstat -an | grep :80 | wc -l 完成了此操作,如 article 中所述
如果您需要弄清楚每个连接在做什么,请在 linux 上使用它
netstat -an | grep :8080 | awk '{print $6}'
如果有三个连接,你会看到
听 时间的等待 TIME_WAIT
如果您只想计算处于 TIME_WAIT 状态的连接数
netstat -an | grep :8080 | grep TIME_WAIT | wc -l
【讨论】:
请参阅Tomcat Manager 下的部分,了解在 web 应用中计算会话的示例。
计算连接数可能有点困难。 Tomcat 为每个传入的请求启动一个新线程,最多可达maxProcessors。超出此数量,请求排队最多 acceptCount。超出此数量的请求将被拒绝/丢弃(或崩溃,我不确定)。可以使用 JConsole 监控属性:Steps here。上面提到的具体属性是HTTP Connector的属性。
编辑 1:
查看 CoyoteConnector 和 AJP 连接器的源代码后,有一个名为 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"/>
【讨论】: