闭关修炼(十七)Tomcat配置调优和Jmeter测试

本文通过Apache JMeter对Tomcat进行压力测试,探讨不同内存配置和垃圾回收策略对性能的影响。测试结果显示,增加线程数、扩大堆内存及优化GC策略能够提升吞吐量,其中并行回收在特定环境下表现更优。建议在实际项目中根据服务器资源和需求进行适当调优。
摘要由CSDN通过智能技术生成


Tomcat压力测试

Jmeter压力测试工具

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

下载

https://jmeter.apache.org/download_jmeter.cgi

下载binaries包,而不是src包。
在这里插入图片描述

使用

下载后,解压,再双击bin\jmeter.bat即可。
在这里插入图片描述
启动后程序界面
在这里插入图片描述

测试

导入servletjar包

 		<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

将项目添加web支持,右键项目添加支持
在这里插入图片描述

勾选Web应用,确定
在这里插入图片描述
ctrl+shift+alt+s打开项目结构,选择Artifacts,在当前项目的WEB-INF文件夹下添加lib文件夹,再点加号,把所有的包导入
在这里插入图片描述

写一个测试用的Servlet

@WebServlet("/index")
public class IndexServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("do get..");
    }
}

启动tomcat服务器
在这里插入图片描述
这些都是javaEE的内容了就不细写了…

访问url,我的站点是http://localhost:8080/biguanxiulian_2_war_exploded/index

会打印输出do get…
在这里插入图片描述
那么web就启动起来了

回到jmeter,右键test plan,添加线程组
在这里插入图片描述
配置线程组参数,线程数设为10(太大会卡),运行时间1s不改,每个线程跑1000次
在这里插入图片描述
右键线程组,添加Sampler中的HTTP请求
在这里插入图片描述
配置HTTP请求,填写ip地址,端口和全路径
在这里插入图片描述
右键HTTP请求,添加监听器中的聚合报告在这里插入图片描述
点击绿色箭头运行,保存文件
在这里插入图片描述
结果(我点了3次了,其实最好点一次就行了)Samples:请求次数3万次,Throughput吞吐量表示每秒能执行多少的请求,可以看到此时吞吐量为1876/s
在这里插入图片描述


写在后面:

jmeter只是一个工具,多用用都能会。做开发的话了解即可,做测试再系统学吧,摆个别人做的博客在这里,有空再看看

https://blog.csdn.net/qq19970496/article/details/101530157


Tomcat参数调优测试-串行回收

紧接上面的例子

jmeter测试做了点改动,线程数加到100了,每个线程依然跑1000次,10个线程太少了,具由偶然性。(线程数多吞吐量会大一些)

先什么都不配,默认来测一次,吞吐量在7500左右

在这里插入图片描述

下面是模拟环境问题:

配置参数

-XX:+PrintGCDetails
-Xms32M
-Xmx32M
-XX:+UseSerialGC
-XX:+HeapDumpOnOutOfMemoryError
-XX:PermSize=32M

在这里插入图片描述

启动起tomcat,用jmeter进行测试,吞吐量6626/s
在这里插入图片描述

扩大堆内存

-XX:+PrintGCDetails
-Xms32M
-Xmx512M
-XX:+UseSerialGC
-XX:+HeapDumpOnOutOfMemoryError
-XX:PermSize=32M

重启tomcat,再次用jmeter测试,新开一个aggregate report,见下图,吞吐量6693/s
在这里插入图片描述

很明显的扩大堆内存吞吐量会有微小的提升。

另外有个有趣的现象:Xms初始值一样为32M,启动tomcat时GC回收次数是相同的。初始值相等,启动流程相同,分配内存所需空间相同,所以GC回收次数是相同的。所以一般项目中Xms=Xmx。

调整初始值和最大值一样

-XX:+PrintGCDetails
-Xms512M
-Xmx512M
-XX:+UseSerialGC
-XX:+HeapDumpOnOutOfMemoryError
-XX:PermSize=32M

jmeter测试结果,不出意外结果是最好的,吞吐量6918/s
在这里插入图片描述

Tomcat参数调优测试-并行回收

并行回收:

一样得配置参数,这次使用并行回收UseParNewGC,看看结果

-XX:+PrintGCDetails
-Xms256M
-Xmx512M
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseParNewGC
-XX:PermSize=32M

结果
在这里插入图片描述

并行合并收集器,并配置GC线程数(GC线程数一般配成等于cpu核心数*2):
-XX:+PrintGCDetails
-Xms256M
-Xmx512M
-XX:+HeapDumpOnOutOfMemoryError
-XX:PermSize=32M
-XX:+UseParallelGC
-XX:+UseParallelOldGC
-XX:ParallelGCThreads=8

吞吐量波动在6600到7200左右
在这里插入图片描述
(这个估计是因为我后台开了太多应用了,现在内存占用已经85%了,有波动是正常的,所有测试的时候尽量保持在一个纯净的环境。)

做完测试后发现,其实默认情况已经挺快的了,由于对比测试中配置的时候最大内存限制在了512M,所以吞吐量还不如默认的情况,实际开发中内存一般会尽量调大。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值