多语言展示
当前在线:1156今日阅读:138今日分享:34

如何通过JMeter和JConsole测试监控Tomcat的性能

本篇经验将分享如何通过JMeter(一个开源的压测工具)和JConsole(一个JMX客户端程序)来对Tomcat进行简单的压力测试以及观察、监控、记录其性能表现。关于JConsole如何对Tomcat进行监控,可以查阅如下经验引用。 0如何通过JConsole监控Tomcat的性能
工具/原料

JMeter,JConsole,Tomcat

方法/步骤
1

准备一个基于SpringBoot的web应用来测试Tomcat的相关指标快速创建一个基于SpringBoot的web应用,并将其启动类声明为为一个 RestController,补充一个请求处理方法(RequestMapping),在请求url中指明了一个数字类型的请求参数,通过这个参数控制线程sleep的时间,以此模拟实际业务处理所需的时间(图示)。关于如何基于SpringBoot快速创建web应用,可以参考如下经验引用。

2

同时为了更好地对比业务处理时间(上述参数控制的延迟时间)和线程个数的关系,我们需要调整一下tomcat默认的业务线程池最大线程数(默认200),在工程 resources 目录下的 application.properties 文件中添加如下信息 (图示):server.tomcat.max-threads=1000

3

配置SpringBoot启动参数,并启动应用(图1示),启动JConsole,使用远程连接的方式监控SpringBoot内置的Tomcat (图2示,具体操作可以参考如下经验引用)

5

启动JMeter测试,并通过JConsole观察tomcat中内存,线程以及cpu的变化1. 启动后台延时2秒的测试请求,执行30秒钟,停止2分钟2. 启动后台延时4秒的测试请求,执行30秒钟,停止2分钟3. 启动后台延时6秒的测试请求,执行30秒钟图示,即JConsole显示的相关测试结果。

6

总结:1. 从线程数量上看,随着后台业务处理时间的增长,tomcat线程池的线程数量也会同步增加,如果自身业务处理逻辑没有改变,但线程数量突然增加,则有可能是依赖的服务出现延时增加的情况。2. 从内存上看,因为上述测试后台并没有大量创建对象,因此这里显示的内存消耗主要是创建线程导致的3. cpu消耗,上述测试后台并没有很复杂的业务处理逻辑,并且客户端吞吐量恒定,cpu的消耗并没有出现很大波动

推荐信息