一、准备工作。
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% Line:90% 用户的响应时间
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的吞吐率得到了相当的提升,平均执行时间大大减少了。
相关推荐
使用JMeter 对Web服务器压力测试
jmeter-压力测试报告-超细,Jmeter性能测试工具使用总结
用JMeter来测试Tomcat的性能.docx
NULL 博文链接:https://sunqi.iteye.com/blog/807475
阐述使用JMETER是怎样对接口进行压力测试,罗列使用步骤,提供给相关技术人员进行参考并快速上手接口压测。
使用JMeter进行性能测试
jmeter4.0进行微信小程序测试(jmeter性能测试教程) jmeter4.0进行微信小程序测试详细步骤指导书jmeter4.0进行微信小程序测试详细步骤指导书jmeter4.0进行微信小程序测试详细步骤指导书
使用JMeter对MyMovie进行压力测试录制注册登录影评参数化注册参数列表登录参数列表影评参数列表事务检查点登录因为注册所用的用户已被注册过所以显示错误登录
此jar包为jmeter 的mqtt连接服务器压力测试工具。本人使用的是MessageBufferPacker对数据加密所以没有传入参数,修改自己修改
1.Jmeter对HTTP请求压力测试、并发测试的简单使用方法 2.HTTP请求压力测试、并发测试的简单使用方法 3.Jmeter对HTTP请求压力测试、并发测试的简单使用方法
1.在jmeter/bin路径下双击jmeter.bat等待jmeter启动 启动成功后的界面显示如下 2.添加线程组:右键测试计划→添加→Threads(Users)→线程组 3.添加简单控制器:右键线程组→添加→逻辑控制器→简单控制器 4.添加...
讲解开源负载工具JMeter的体系结构、脚本开发、负载模拟、测试监听等内容,让读者可以从零开始学会使用一个主流的负载工具,此部分是市面上到目前为止对JMeter讲解较全面的内容,掌握其内容即可以进行性能测试脚本...
性能测试工具JMeter书籍(6本)目录知识点(思维导图加图)整理.rar 根据如下6本性能测试、JMeter书籍收集整理重点知识点: 2012年《零成本实现Web性能测试:基于...2020年《软件性能测试、分析与调优实践之路》
在一家上市公司做的性能测试培训,包含如何制造数据,如何设计性能测试方案 ,如何执行脚本,如何去做性能监控及调优 ,如何写性能测试报告 等内容展开培训,得到 一定的效果
使用JMeter 对SOAP 应用进行压力或性能测试.pdf
JMeter对mysql数据库进行压力测试
性能自动化测试(基于jmeter+jenkins+ant+tomcat),亲测可以顺利完成
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器,网络或对象模拟繁重的负载来测试它们的强度或分析不同压力...