我在 Tomcat Server 5.5.17 上部署了一个 Java/Java EE Web 应用程序。我想知道连接到服务器的客户端数量。我们怎样才能找到它?
3 回答
最可靠的方法是搜索ip.addr.of.srv:port
in netstat
。这是基于 Windows 的示例(抱歉,这里没有 Linux 大师;))
网络统计-np tcp | 找到“12.34.56.78:80”
12.34.56.78
用Tomcat 侦听的 IP 和 Tomcat 侦听80
的端口替换。
这实际上不是编程问题,因此我投票将这个问题迁移到serverfault.com。
如果您需要弄清楚每个连接在做什么,请在 linux 上使用它
netstat -an | grep :8080 | awk '{print $6}'
如果有三个连接,你会看到
听 TIME_WAIT TIME_WAIT
如果您只想计算处于 TIME_WAIT 状态的连接
netstat -an | grep :8080 | grep TIME_WAIT | wc -l
有关计算 web 应用程序中会话的示例,请参阅Tomcat 管理器下的部分。
计算连接数可能有点困难。Tomcat 为每个请求启动一个新线程,最多maxProcessors
. 超出此数量,请求最多排队acceptCount
. 超出此数量的请求将被拒绝/丢弃(或崩溃,我不确定)。可以使用 JConsole 监控属性:此处的步骤。上面提到的具体属性是HTTP 连接器的属性。
编辑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"/>