Tomcat自身支持实时连接状态监控:启用Manager Status页面可查看currentThreadsBusy等指标;用netstat命令抓取ESTABLISHED连接数;通过JMX+JConsole监控线程池与连接池;或部署LambdaProbe实现可视化诊断与告警。

启用 Tomcat 自带 Manager Status 页面
这是最轻量、无需额外安装的实时连接查看方式。
- 确保
$CATALINA_HOME/conf/tomcat-users.xml中已配置具备manager-status角色的用户,例如:
<role rolename="manager-status"/><br><user username="monitor" password="pass123" roles="manager-status"/>
- 启动 Tomcat 后访问:
http://[host]:[port]/manager/status(默认端口 8080) - 页面顶部显示当前 Connector 状态:包括 currentThreadCount、currentThreadsBusy、maxThreads,以及 processingTime 和最近请求统计
- HTTP/1.1 Connector 下会列出实时连接数(如
keep-alive连接)、活跃请求数、接收/发送字节数等
用 shell 命令实时抓取底层 TCP 连接数
适用于快速验证端口级连接压力,绕过应用层,直击操作系统网络栈。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 执行以下命令,每秒刷新一次 8080 端口上处于 ESTABLISHED 状态的连接数:
watch -d -n 1 'netstat -antp | grep :8080 | grep ESTABLISHED | wc -l'
- 若使用非标准端口(如 8090),把
:8080替换为:8090 - 注意:该值反映的是 OS 层面已建立的 TCP 连接,包含长连接、Keep-Alive、甚至未及时关闭的残留连接,不一定等于 Tomcat 正在处理的请求数
- 可叠加过滤条件,比如只看来自某 IP 段的连接,辅助定位异常来源
通过 JMX + JConsole 或 VisualVM 查看连接池与线程池指标
JMX 是 Tomcat 内置监控的核心通道,尤其适合观察数据库连接池和 HTTP 线程池的实时水位。
- 启动 Tomcat 时添加 JVM 参数启用本地 JMX(生产环境慎开远程):
-Dcom.sun.management.jmxremote<br>-Dcom.sun.management.jmxremote.port=9999<br>-Dcom.sun.management.jmxremote.authenticate=false<br>-Dcom.sun.management.jmxremote.ssl=false
- 运行
jconsole→ 连接本地 Tomcat 进程 → 切换到 MBeans 标签页 - 展开
Catalina → ThreadPool → "http-nio-8080",查看:
currentThreadCount(当前线程总数)
currentThreadsBusy(正忙线程数)
keepAliveCount(保持存活的连接数) - 展开
Tomcat → DataSource → "jdbc/YourDS"(需配置了 JNDI 数据源),查看:
numActive(活跃连接数)
numIdle(空闲连接数)
waitCount(等待获取连接的线程数)——该值持续 > 0 是连接池瓶颈的明确信号
集成 Probe 或 LambdaProbe 可视化控制台
这些是专为 Tomcat 设计的 Web 管理界面,比原生 manager 更深入,支持图表、历史趋势和会话级诊断。
- LambdaProbe(开源,兼容 Tomcat 7–9)部署后提供:
实时线程堆栈图、内存使用热力图、每个 Servlet 的调用频次与平均耗时、HTTP 连接队列深度 - Probe 3.0 支持导出 CSV、设置阈值告警(如 busy threads > 90% maxThreads 持续 30 秒触发邮件)
- 二者均不依赖外部 Agent,只需将 war 包放入
webapps并配好 manager 权限即可启动

















