`
Josh_Persistence
  • 浏览: 1653556 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

使用JMeter对Tomcat进行压力测试与Tomcat性能调优

阅读更多

一、准备工作。

      1、安装JDK1.6或1.6版本以后的,并配置环境变量。

      2、在Apache的官网下载最新的Jmeter,http://jmeter.apache.org/download_jmeter.cgi,截止目前为止,最新的Jmeter是2.12版本,需要注意的是下载使用的时候不能下载source版本的,必须下载内容更加完整的binaray版本的,比如如果下载apache-jmeter-2.12_src.zip,运行jmeter.bat时,会出现下面的exception:

unable to access jarfile apachejmeter.jar error value=1

这个exception的原因是apache-jmeter-2.12_src.zip中的bin目录中,缺少了ApacheJemeter.jar.所以要下载binary版本的。

     3、在Apache的官网上下载Tomcat,本文中以Tomcat7.0.42为例。

 

二、开发一个简单的J2EE工程,可以是基于Servlet的,可以是基于Spring等MVC框架的,而且不需要实现什么样的功能,只需要满足用户访问http://localhost:9999时,浏览器中能够输出(index.html)Hello World或者其它任何内容。

 

三、开始在Jmeter中配置模拟对Tomcat的index.html(localhost:9999)进行并发访问。

首先是使用Tomcat 7.0.42的默认配置

1、选中Test Plan,点击Edit菜单按钮,选择Add操作,选择Thread(Users),然后选择Thread Group创建一个线程组。

2、选中Thread Group,点击Edit菜单按钮,选择Add操作,选择Sampler,并选择Http Request。

3、选中Test Group,点击Edit菜单安丘,选择Add操作,选择Listener,然后分别添加Aggregate Graph(聚集图形),View Results Tree(查看结果树)。



 

3、不修改Tomcat的默认配置,启动Tomcat,由于默认的Tomcat运行在8080端口,将上面的9999端口先改回8080或者遵照后面点的步骤将Tomcat默认的8080端口改为9999。

 

4、启动Tomcat。

 

5、点击上面的绿色执行按钮执行该测试计划。



 

由测试线程组可知,Jemeter将模拟150000个线程请求不断的访问localhost:8080。执行10分钟后,运行结果截图可得:



 下面将详解这个聚合报告中的每个参数:

1)Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,label显示的就是 Name 属性的值 

2)#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100,这里显示的应该是150000而不是172649,之所以是172649,是因为我中间点击停止,然后又再原来的基础上重新开始执行。

3)Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间 

4)Median:中位数,也就是 50% 用户的响应时间 

5)90% Line90% 用户的响应时间 

 

6)Min:最小响应时间 

7)Max:最大响应时间 

8)Error%:本次测试中出现错误的请求的数量/请求的总数 

9)Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数 

10)KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec 
这里我们可以看到,在这172649多次的访问之中,tomcat的访问出错率是0.15%,即大概有100多次的请求是由于忙碌而失败了的。当然,这只是一个参考,具体还要根据软硬件的条件才能最终确定下来。

 

对Tomcat进行调优后再用Jmeter进行测试

1、增加Tomcat对JVM内存的分配:即调整虚拟内存 


Linux: 
在/usr/local/tomcat_home/bin目录下的catalina.sh 
添加:JAVA_OPTS='-Xms1024m -Xmx2048m' 
要加“m”说明是MB,否则就是KB了,在启动tomcat时会报内存不足。 
-Xms:初始值 
-Xmx:最大值 
-Xmn:最小值 

Windows: 

在catalina.bat最前面加入 
set JAVA_OPTS=-Xms1024m -Xmx2048m 
如果用startup.bat启动tomcat,OK设置生效。够成功的分配2048M内存. 
但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,就是说set JAVA_OPTS=-Xms1024m -Xmx2048m没起作用。
windows服务执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.。
解决办法: 
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat7\Parameters\JavaOptions 
原值为 
-Dcatalina.home="C:\ApacheGroup\Tomcat 7.0.42" 
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 7.0.42\common\endorsed" 
-Xrs 
加入 -Xms1024m -Xmx2048m 
重起tomcat服务,设置生效 

 

2、修改线程池并将默认的8080端口修改为9999端口。

即将默认的

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 修改为:

<Connector port="9999" redirectPort="8443"    
   maxHttpHeaderSize="8192" useBodyEncodingForURI="true"    
   minProcessors="100" maxProcessors="5000"    
   maxThreads="5000" minSpareThreads="1000" maxSpareThreads="4000"    
   enableLookups="false" acceptCount="3500"    
   compression="on" compressionMinSize="2048"    
   compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"    
   connectionTimeout="60000" disableUploadTimeout="true" debug="0" URIEncoding="UTF-8"/>

 3. 禁用DNS查询 

 当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭 DNS查询,方式是修改server.xml文件中的enableLookups参数值: 将其设置为false。

4、修改完后,重启tomcat。

5、在Jmeter的Thread Group中将上面的8080改成9999.

6、重新执行Jmeter,执行10分钟后,保存执行结果,得到如下的执行结果:




对比调优后的执行结果,发现Tomcat的吞吐率得到了相当的提升,平均执行时间大大减少了。

 

 

 

 
  • 大小: 65.6 KB
  • 大小: 49.5 KB
  • 大小: 6.1 KB
  • 大小: 4.5 KB
5
2
分享到:
评论

相关推荐

    用JMeter来测试Tomcat的性能.rar

    在IT行业中,性能测试是确保...总之,通过JMeter对Tomcat进行性能测试,不仅可以评估其性能,还能发现并解决潜在问题,从而提升整个Web应用的稳定性和性能。正确配置和使用JMeter,将使测试过程更加高效且具有针对性。

    优化提高tomcat性能.Tomcat参数调优

    `Tomcat性能优化,学会薪水翻倍-jmeter测试java -jar --设置参数运行的程序.url`提供了更多关于如何使用JMeter进行性能测试的资源。 通过上述方法,我们可以针对不同场景对Tomcat进行调优,提升其处理请求的能力,...

    JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).pdf

    JMeter是一个开源的性能测试工具,可以用于对服务器、网络或对象进行压力和负载测试。通过JMeter可以模拟用户请求,从而对系统性能进行评估。文档还提到了吞吐量和错误率等性能指标的测试与监控。 最后,文档还提到...

    (转)ab-tomcat压力测试工具

    6. **性能调优**:压力测试的结果可以指导我们对Tomcat进行性能调优,包括但不限于调整线程池大小、内存分配、JVM参数等,以提高服务器的响应速度和并发能力。 7. **并发测试**:ab工具的并发测试功能对于模拟实际...

    通向架构师的道路(第四天)之Tomcat性能调优-让小猫飞奔.docx

    同时,定期进行性能测试,如使用Apache JMeter,可以量化评估调优效果。 通过这些综合性的调优策略,不仅能够使Tomcat处理更大的并发用户,还能显著提升系统整体性能。在实际工程中,作者见证了系统性能平均提升20...

    Apache与tomcat整合、性能、集群、测试.pdf

    1. **压力测试**:使用压力测试工具如JMeter模拟高并发请求,测试Apache与Tomcat集群的最大承载能力,评估系统在高负载下的响应时间和资源消耗。 2. **功能测试**:确保整合后的集群系统能够按照预期工作,包括静态...

    jmeter 整合.pptx

    JMeter是一款强大的开源性能测试工具,广泛用于模拟用户负载,以评估软件系统的性能和稳定性。以下是对JMeter各个方面的详细解释: **JMeter体系结构**: JMeter的架构基于组件模型,主要由线程组、取样器、逻辑...

    Tomcat与Java.Web(源文件)

    15. **性能测试与调优**:使用Apache JMeter、LoadRunner等工具进行压力测试,找出性能瓶颈,针对性地进行优化。 综上所述,Tomcat与Java.Web的结合是开发和部署Java Web应用的常用方式,通过深入理解这些知识点,...

    Tomcat培训学习资料

    在性能测试和调优方面,了解如何使用性能测试工具如Apache JMeter等来模拟高负载情况下的应用表现,然后根据测试结果调整Tomcat配置以优化性能。常见的性能测试指标包括响应时间、吞吐量、资源利用率等。 以上内容...

    TOMCAT权威指南(第二版).pdf

    - 使用工具如Apache JMeter或LoadRunner来进行性能测试。 ### 六、资源推荐 - **官方网站**:https://tomcat.apache.org/ - **官方文档**:https://tomcat.apache.org/tomcat-9.0-doc/ - **社区论坛**:...

    通向架构师的道路(第三天)之apache性能调优

    性能测试,也称为压力测试,用于评估系统在特定并发用户量下的极限性能,查找可能存在的Out of memory等问题,并检查系统配置是否合理。通常使用的工具有LoadRunner(商业)和JMeter(开源)。 然而,性能测试存在...

    tomcat8.5.32

    此外,还可以结合使用其他工具,如Apache JMeter进行压力测试,找出性能瓶颈。 在实际使用中,Apache Tomcat 8.5.32通常与其他Java应用服务器或框架(如Spring Boot)配合使用,构建复杂的Web应用。通过理解并掌握...

    Tomcat性能优化

    - 通过性能测试工具(如JMeter、AB等)模拟用户行为,测量Tomcat的响应时间和吞吐量。 - 分析系统瓶颈,识别性能短板,如数据库查询效率、网络延迟、内存使用等。 - 运行期监控,如使用JVisualVM、JProfiler等...

    性能测试学习计划.txt

    - 熟悉JMeter插件的安装与使用。 ### 九、持续学习与实践 #### 9.1 持续跟进最新技术动态 - 关注行业内的最新技术趋势和发展方向。 - 参加相关的培训课程和技术交流会议。 #### 9.2 实践项目经验 - 积极参与实际...

    tomcat极限优化

    3. 性能测试:通过工具如JMeter进行压力测试,找出性能瓶颈。 七、安全优化 1. 定期更新Tomcat版本,修复已知安全漏洞。 2. 使用SSL/TLS加密通信,保障数据传输安全。 3. 限制不必要的网络访问,如关闭未使用的端口...

    JMeter 使用教程

    JMeter 是一个基于Java的工具,专门用于对客户端-服务器应用程序进行负载测试。它最初由Stefano Mazzocchi开发,目的是为了测试Apache JServ(Jakarta Tomcat的前身)的性能。随着时间的推移,JMeter已经成为Jakarta...

    通向架构师的道路(第三天)之apache性能调优.docx

    我们将从性能测试开始,了解如何根据一定数量的 VU(Virtual Users)进行压力测试,以发现系统的极限和瓶颈问题。此外,我们还将讨论如何合理地制定系统最大用户和并发用户数。 性能测试简介 压力测试是一种根据...

    Tomcat 8.0版本 优化过

    - 使用JMeter、 Gatling等压力测试工具,模拟高并发场景,找出性能瓶颈。 8. **缓存策略**: - 应用级缓存,如Ehcache或Guava Cache,可以降低数据库查询频率,提高响应速度。 9. **JNDI资源优化**: - 合理...

Global site tag (gtag.js) - Google Analytics