深入拆解 Tomcat & Jetty
李号双
eBay 技术主管
38890 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 45 讲
开篇词 (1讲)
深入拆解 Tomcat & Jetty
15
15
1.0x
00:00/00:00
登录|注册

35 | 如何监控Tomcat的性能?

性能问题的问题定位
监控Web应用的健康状态
监控指标用于诊断系统性能问题
学习Tomcat中的关键性能指标
通过JConsole观察Tomcat指标
使用JMeter进行压测
创建模拟延迟的Web应用
使用ifstat查看网络流量
查看网络连接
监控CPU和内存资源使用情况
查看进程状态信息
监控关键指标
连接JConsole到端口
开启JMX的远程监听端口
JVM内存
CPU
线程池
错误数
响应时间
吞吐量
课后思考
本期精华
实战案例
命令行查看Tomcat指标
通过JConsole监控Tomcat
Tomcat的关键指标
如何监控Tomcat的性能?

该思维导图由 AI 生成,仅供参考

专栏上一期我们分析了 JVM GC 的基本原理以及监控和分析工具,今天我们接着来聊如何监控 Tomcat 的各种指标,因为只有我们掌握了这些指标和信息,才能对 Tomcat 内部发生的事情一目了然,让我们明白系统的瓶颈在哪里,进而做出调优的决策。
在今天的文章里,我们首先来看看到底都需要监控 Tomcat 哪些关键指标,接着来具体学习如何通过 JConsole 来监控它们。如果系统没有暴露 JMX 接口,我们还可以通过命令行来查看 Tomcat 的性能指标。
Web 应用的响应时间是我们关注的一个重点,最后我们通过一个实战案例,来看看 Web 应用的下游服务响应时间比较长的情况下,Tomcat 的各项指标是什么样子的。

Tomcat 的关键指标

Tomcat 的关键指标有吞吐量、响应时间、错误数、线程池、CPU 以及 JVM 内存
我来简单介绍一下这些指标背后的意义。其中前三个指标是我们最关心的业务指标,Tomcat 作为服务器,就是要能够又快有好地处理请求,因此吞吐量要大、响应时间要短,并且错误数要少。
而后面三个指标是跟系统资源有关的,当某个资源出现瓶颈就会影响前面的业务指标,比如线程池中的线程数量不足会影响吞吐量和响应时间;但是线程数太多会耗费大量 CPU,也会影响吞吐量;当内存不足时会触发频繁地 GC,耗费 CPU,最后也会反映到业务指标上来。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

如何监控Tomcat性能指标及问题定位 本文介绍了监控Tomcat性能指标的方法,包括吞吐量、响应时间、错误数、线程池、CPU和JVM内存。通过JConsole和命令行可以监控这些指标。文章还通过实战案例展示了如何通过JMeter和JConsole观察Tomcat的性能指标,并分析线程数、CPU和内存的变化。通过监控和分析这些指标,读者可以快速了解系统的性能瓶颈,并进行调优决策。 在工作中,监控Web应用的健康状态可以通过监控类似的性能指标来实现。遇到性能问题时,可以通过分析吞吐量、响应时间、错误数、线程池、CPU和内存等指标来定位问题。这篇文章提供了实用的方法和案例,帮助读者更好地监控和定位Web应用的性能问题。 通过本文的内容,读者可以学习到如何监控Tomcat的性能指标以及如何通过监控和分析来定位性能问题,对于需要进行Web应用性能监控和调优的技术人员来说,这是一篇非常有价值的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解 Tomcat & Jetty 》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(26)

  • 最新
  • 精选
  • 陆离
    老师,不是很明白线程sleep时间越长,为什么tomcat启动的线程就越多

    作者回复: 这是Tomcat需要从线程池拿出一个工作线程来处理请求,请求处理(休眠)的时间越长,这些线程被阻塞,休眠时间越长,被阻塞的线程越多,这些线程无法被线程池回收,Tomcat线程池不得不创建更多的线程来处理新的请求。

    2019-08-01
    4
    18
  • dingdongfm
    请教一个细节,Timeout 设置为 1000 毫秒,接口延迟4S,那么ERROR不是100%么?

    作者回复: 这里是特意这么做的,目的是让Jmeter把流量压上去,因为上一个请求没有返回,Jmeter不会发下一个请求。

    2019-09-29
    9
  • -W.LI-
    李老师好。 第二三阶段,有很多TIME_WAIT状态的线程。可是CPU使用率并没有增加很多。老师说CPU使用率和吞吐量有关,吞吐量由JMETER控制一直没变。频繁线程切换会消耗很多CPU支援,如果只是阻塞,切换不频繁。对CPU使用率还是比较小的是么?

    作者回复: 对的

    2019-08-01
    5
  • Geek_ebda96
    老师请问一下,windows机器上用jconsole工具,不能看到tomcat的进程,是什么原因

    作者回复: 嵌入式tomcat进程一般是你的应用程序的名字,独立Tomcat进程你可以找bootstrap关键字

    2019-08-13
    3
  • 尔冬橙
    内存泄露的原因是什么呢?代码写的有问题?

    作者回复: 对的

    2019-08-16
    3
    2
  • Geek_28b75e
    老师,通过监控工具看到了有哪些线程,但是发现有些线程大部分都在等待,怎么找到这些线程创建位置,进而调整线程池初始化大小?

    作者回复: 通过线程栈查看,jstack

    2019-08-07
    1
  • 许童童
    使用prometheus + grafana 监控各种指标,每天上班前看一下昨天的情况,设置好阈值,如果达到就报警。
    2019-08-01
    1
    28
  • nightmare
    先查看日志,那些方法耗时较大,用阿里爸爸开源arthas监控有问题的方法,排查问题
    2019-08-01
    2
    10
  • 仙道
    如果这样类型的内容能够再深入点、再广一点就好了。因为作为普通开发,很难有机会接触到这方面的知识,也无从学起
    2019-09-27
    9
  • Geek_28b75e
    老师,springboot内嵌tomcat怎么使用jmx?
    2019-08-07
    4
    4
收起评论
显示
设置
留言
26
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部