You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计Spring Boot及外置Tomcat应用的在线连接用户数?

统计外置Tomcat应用的在线连接用户数

当然可以统计,下面分不同层面给出准确的方法,同时解释你用到的系统命令的局限性:

一、系统命令的准确性说明

你用的netstat -ano(Windows)或ps -ef | grep java(Linux)本身存在局限:

  • ps -ef | grep java仅能定位Tomcat进程,无法直接统计连接数。
  • netstat返回的是端口的所有连接,包括未完成握手、TIME_WAIT状态的无效连接,不能直接等同于活跃用户连接。

如果想用系统命令统计已建立的有效连接,可以用更精准的命令:

  • Linux 环境:
    ss -t state established '( dport = :8080 or sport = :8080 )' | wc -l
    
    (替换8080为你的Tomcat HTTP端口)
  • Windows 环境(PowerShell):
    Get-NetTCPConnection -LocalPort 8080 -State Established | Measure-Object | Select-Object -ExpandProperty Count
    
    注意:这类统计的是端口连接数,一个用户可能打开多个浏览器标签产生多个连接,所以不等于实际用户数。

二、Tomcat自带工具(更贴近实际用户数)

1. 管理控制台(Manager App)

启用Tomcat Manager后,访问http://<tomcat-ip>:<port>/manager/html,找到你的应用,查看Active Sessions字段,这是Tomcat维护的活跃HTTP会话数,更接近实际在线用户数(前提是应用基于HTTP Session跟踪用户)。

启用方法:修改conf/tomcat-users.xml,添加具备manager-gui角色的用户:

<user username="admin" password="your-password" roles="manager-gui"/>

2. JMX监控

通过JMX工具(如jconsole、jvisualvm)连接Tomcat,定位到MBean Catalina:type=Manager,context=/<你的应用名>,host=localhost,查看activeSessions属性值,支持自动化脚本统计。

3. 访问日志分析

Tomcat默认访问日志(logs/localhost_access_log.*.txt)包含会话ID(默认格式为%J),可以通过脚本统计唯一活跃会话数:

awk '{print $7}' logs/localhost_access_log.2024-05-20.txt | grep -v '-' | sort | uniq | wc -l

(替换日志文件名和字段位置,根据你的日志格式调整)

三、应用层自定义统计(精准区分用户)

如果需要统计已登录用户数而非会话数,可以在应用内实现:

  • 注册HttpSessionListener,监听会话创建/销毁事件,维护全局活跃会话计数。
  • 结合用户登录状态,用Redis或内存缓存存储登录用户的会话ID,定期清理超时用户,实现精准的登录用户统计。

内容的提问来源于stack exchange,提问作者Christopher LUKOMBO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 10:25:07