工具文件和操作文件在 我的网盘/编程软件及工具包/工具包/JMeter-WEB应用性能测试工具的简单用法及web应用tomcat下简单JVM性能调优
1.解压apache-jmeter-2.13.zip
2.双击解压目录后的bin目录下的jmeter.bat
出现如下GUI界面
3.给测试计划添加线程组右键测试计划->添加->Threads(Users)->线程组 无需保存
自动会出现如下界面
在界面中定义线程数为10,循环次数为1000(表示每个线程请求目标controller 1000次)无需保存
4.紧跟着上面继续操作,给线程组添HTTP请求 在上图的线程组右键->添加->Sampler->HTTP请求
出现如下界面
然后添加请求需要的一些信息,无需保存如下图
5.紧跟着添加聚合报告 给HTTP请求添加聚合报告
在上图HTTP请求右键->添加- >监听器- >聚和报告 无需保存
Label #Samples等含义解释如下-- 重点是Throughput:吞吐量,即每秒请求响应数
理解 JMeter 聚合报告(Aggregate Report)
Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”。今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅。
如果大家都是做Web应用的性能测试,例如只有一个登录的请求,那么在Aggregate Report中,会显示一行数据,共有10个字段,含义分别如下。
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Note:关于 50% 和 90% 并发用户数的含义,请参考下文
http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
另外TOMCAT参数调优测试:
出现如下界面,点Arguments
对VM arguments进行添加
原:
-Dcatalina.base="D:\installation\installation\apache-tomcat8-test-JMeter" -Dcatalina.home="D:\installation\installation\apache-tomcat8-test-JMeter" -Dwtp.deploy="D:\installation\installation\apache-tomcat8-test-JMeter\wtpwebapps" -Djava.endorsed.dirs="D:\installation\installation\apache-tomcat8-test-JMeter\endorsed"
然后在这些参数后加入下面的调优参数进行测试(参数含义参考(E:盘或者我的网盘\我的笔记)\学习文档子目录压缩\java高级\JVM\蚂蚁jvm优化1\(深入理解Java虚拟机.docx里堆得参数设置这个结构和垃圾回收机制算法垃圾回收器) 或者百度
测试串行吞吐量
-XX:+PrintGCDetails -Xmx32M -Xms32M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseSerialGC -XX:PermSize=32M |
GC回收6次 吞吐量301 |
扩大堆的内存
-XX:+PrintGCDetails -Xmx512M –Xms32M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseSerialGC -XX:PermSize=32M |
GC回收2次 吞吐量349 |
结论 最大内存越大,吞吐量越高。 |
调整初始堆
-XX:+PrintGCDetails -Xmx512M –Xms256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseSerialGC -XX:PermSize=32M |
GC回收0次 吞吐量419 |
并行回收(UseParNewGC)
-XX:+PrintGCDetails -Xmx512M –Xms256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:PermSize=32M |
GC回收0次 吞吐量532 |
测试结果1794 179
并行合并回收(UseParallelGC)
-XX:+PrintGCDetails -Xmx512M -Xms256M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=8 -XX:PermSize=32M |
|
测试结果2100 209
可以看到,堆初始内存越小,启动时GC回收次数越多,最大内存越大,吞吐量越高,
企业中一般都市用并行合并回收的,不可能用串行一个GC线程回收,效率太慢
例子:
1.如加入并行合并回收(UseParallelGC)后 VM arguments内容为
-Dcatalina.base="D:\installation\installation\apache-tomcat8-test-JMeter" -Dcatalina.home="D:\installation\installation\apache-tomcat8-test-JMeter" -Dwtp.deploy="D:\installation\installation\apache-tomcat8-test-JMeter\wtpwebapps" -Djava.endorsed.dirs="D:\installation\installation\apache-tomcat8-test-JMeter\endorsed"
-XX:+PrintGCDetails -Xmx512M -Xms256M
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseParallelGC
-XX:+UseParallelOldGC
-XX:ParallelGCThreads=8
-XX:PermSize=32M