【Jmeter】【压测】在CentOS上使用Jmeter压测Websocket

需求如题目:在CentOS上使用Jmeter压测Websocket

一.结果要点:

先说结果,简要来说分下面几个步骤:

1.在本地写好Jmeter的压测脚本,并调试通过;

2.在CentOS上安装JMeter,并确保可用;

3.将脚本传到CentOS机器上,并修改部分配置,调试通过;

4.执行压测,并监控运行日志;

5.生成压测报告,分析压测结果。

 

二.要点命令:

下面记录部分我压测使用的几条命令:

# 运行测试
/usr/apache-jmeter-4.0/bin/jmeter -n -t /home/pftest/Whiteboard/writeboard_sharing.jmx -l /home/pftest/Whiteboard/writeboard_sharing.jtl

运行参数说明:

运行方法:
在JMeter的bin目录下运行命令:
./jmeter -n -t test_queryweb_on_linux.jmx -l test_queryweb.jtl
参数说明:
-n 表示以无界面方式运行
-t 后面跟测试计划名称
-l 后面跟测试结果文件名称

运行命令:

# 运行测试
/usr/apache-jmeter-4.0/bin/jmeter -n -t /home/pftest/Whiteboard/writeboard_sharing.jmx -l /home/pftest/Whiteboard/writeboard_sharing.jtl


# 转换报告
/usr/apache-jmeter-4.0/bin/jmeter -n -t /home/pftest/Whiteboard/writeboard_sharing.jmx -l /home/pftest/Whiteboard/writeboard_sharing.jtl -e -o /home/pftest/Whiteboard/writeboard_resultReport

每次重复运行,需要删除下面的两个文件,并清除log

rm -rf writeboard_resultReport
rm -rf writeboard_sharing.jtl
echo > jmeter.log

 

三.参考文档:

下面其他几篇文章写得比较详细,如果想从头开始,可以详细参考:

这两篇文章不错,可以参考:

利用Jmeter对WebSocket进行压力测试:https://blog.csdn.net/weixin_43757847/article/details/84871355
Jmeter对Web Socket进行压力测试 —— 200人直播课实战经验:https://blog.csdn.net/tomoya_chen/article/details/80626212

下面摘取部分:

 

四.利用Jmeter对WebSocket进行压力测试

摘自:https://blog.csdn.net/weixin_43757847/article/details/84871355

什么是WebSocket
是一种协议(具体查看参考文档,或者官方文档),在http中服务器只能在接收到请求后,才能给客户端返回response,在一些服务端需要主动发送数据的需求时,http的实现效果不是很好。而WebSocket能很好的解决这个问题,在建立连接后,服务端和客户端可以随意的来回发送数据,整个通信类似打电话:建立连接(拨通)->通信->关闭连接(挂断)。

如何识别性能测试的业务有WebSocket
chrome浏览器打开调试工具, 查看网络请求触发源

用抓包工具,如Charles

JMeter中安装WebSocket插件
下载JMeter
下载jar包 (jetty-http, jetty-io, jetty-util, websocket-api, websocket-client, websocket-common)
将jar包放到jmeter的lib/ext目录下,重启Jmeter,就可以看到WebSocket的sampler

Websocket几种sampler的使用
Websocket性能测试需要注意的点

Websocket跟http请求的关系很小,几乎没有关系,所以在性能测试中,可以根据实际忽略业务场景中一些http请求
根据bodoudou业务场景的设计,我推测ws中很少会进行数据校验,所以可使用重复数据,不用考虑生成批量数据(数据校验会在http请求中)
有些Websocket Single Write和Websocket Single Read一一对应的使用,类似于一问一答的场景(类似http的request-response)可以使用WebSocket request-response Sampler。
Websocket Single Read Sampler和WebSocket request-response Sampler中的Read timeout超时时间要注意根据实际场景来设置,如果太短的话,就获取不到数据了
发送的data支持文本(JSON)和Binary二进制数据(没了解过),可以抓包获取格式,直接复制
建立连接
WebSocket Open Connection
如果仅建立连接,不发送数据,不需要返回数据,用WebSocket Open Connection。ES剥豆豆场景中,建立连接的时候并不会发送data,用的是WebSocket Open Connection。


WebSocket request-response Sampler
如果建立连接时,还需要发送或用到返回数据,则用 WebSocket request-response Sampler。


Ping/Pong

根据需求使用,心跳机制,检查连接是否还存在。请求头带编码,告诉WebSocket服务,这是心跳,所以不用填写任何东西,可以直接使用。

参考文档: Websocket协议

 

五.Linux上安装&运行JMeter

摘自:https://blog.csdn.net/ceo158/article/details/9331813

1、安装&配置

可在Linux服务器上利用服务器强大的性能,执行JMeter进行性能测试。

当然,可在Windows机器上先编好测试计划(注意版本匹配,否则可能产生莫名错误),然后下载到Linux上运行。

以JMeter2.9为例,下载地址:http://jmeter.apache.org/download_jmeter.cgi,选择binaries下2.9版本。

解压完成后,添加环境变量:

vi /etc/profile

添加下述两行:

export JMETER="/usr/local/jmeter/apache-jmeter-2.9"
export CLASSPATH="$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH"

完成添加后下述命令使配置生效:

source /etc/profile

 

2、运行测试计划

如需要修改测试计划,可在Linux上以文本形式打开,编辑诸如线程数,迭代次数等等参数。

首先为测试计划test_on_linux.jmx新建一个存储测试结构的文件test.jtl。

在JMeter的bin目录下运行命令:

./jmeter -n -t test_queryweb_on_linux.jmx -l test_queryweb.jtl

参数说明:

-n表示以nogui方式运行测试计划

-t表示测试计划,后面跟测试计划名称

-l表示测试结果,后面跟测试结果文件名称

 

如果没有错误,则打印如下信息:

[root@localhost bin]# ./jmeter -n -t test_on_linux.jmx -l test.jtl
Created the tree successfully using test_on_linux.jmx
Starting the test @ Mon Jul 15 13:51:22 CST 2013 (1373867482740)
Waiting for possible shutdown message on port 4445
Tidying up ...    @ Mon Jul 15 13:52:37 CST 2013 (1373867557639)
... end of run

 

3、查看测试结果

上述end of run表示测试计划已经运行完毕。可在windows上运行JMeter打开测试结果文件test.jtl。

具体步骤为:

step1:

运行JMeter的bin目录下jmeter.bat,打开JMeter图形窗口,并新建或打开一个测试计划,为该计划添加“结果查看树”和“聚合报告”。

 

图1 添加“结果查看树”和“聚合报告”。

 

step2:

打开查看结果树,点击“浏览”按钮打开测试结果文件test.jtl。同理,打开聚合报告,点击“浏览”按钮打开测试结果文件test.jtl生成聚合报告。

 

图2 打开结果文件

 

4、分布式运行JMeter

执行命令:./jmeter -n -t test.jmx -R  ip1,ip2 -l test.jtl

参数说明 :
-R  表示JMeter代理,后面跟代理所在ip地址。
其他操作与单代理一样。
 
5、可能产生的运行时错误
1)Error in NonGUIDriver java.lang.NullPointerException
产生该错误的原因,目前就我所知,有两种情况:
情况1,低版本的JMeter运行高版本的测试计划(测试计划是在高版本的JMeter上编制的)。解决方法:使用相同或更高版本JMeter运行该计划。
情况2,使用第三方插件生成的测试计划,运行在没有该第三方插件的JMeter上。解决方法:在JMeter上安装插件或重新生成不包含插件的测试计划。

 

五.搭建分布式Jmeter压测环境

Jmeter 分布式测试环境搭建 on Centos

http://www.jianshu.com/p/536ffb953749

http://www.cnblogs.com/lzlfighter/p/6706952.html

Jmeter分布式执行原理:

1、Jmeter分布式测试时,选择其中一台作为调度机(master/Controller),其它机器做为执行机(slave/Agent)。
2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,应该是通过non-gui命令行模式执行的。
3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。

注意:
(1)每一台jmeter远程服务器(slave机器)都执行相同的测试计划,jmeter不会在执行期间做负载均衡,每一台服务器都会完整地运行测试计划,所以根据木桶原理,性能最差的slave可能会影响测试;
(2)采用JMeter远程模式并不会比独立运行相同数目的非GUI 测试更耗费资源。但是,如果使用大量的JMeter 远程服务器,可能会导致客户端过载,或者网络连接发生拥塞;
(3)默认情况下,master机器是不执行参与生成并发数据的;
(4)调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以master自身会有消耗,所以建议单独用一台机器作为master。

这些简介都是从其他童鞋那里抄的,之前在网上找文档的时候,发现都是windows作为master,本文主要share Centos 的机器搭建的过程,下面是具体的步骤:

  1. 配置安装Java & Jmeter
  2. 配置 slave
  3. 配置 master
  4. non-gui 下,run Jmeter 脚本

  1. 配置安装Java & Jmeter

安装Java,自己找文档去吧,我用的是1.8

1.png
1.png

安装Jmeter
Jmeter帮助文档:http://jmeter.apache.org/usermanual/index.html
Jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi

image.png
image.png

进入到自己的目录(/home/username)

这里要配置环境变量,因为公司Centos设置,一般测试账号拿不到root 权限,于是把环境变量设置在 /home/username/.bashrc里面,

image.png
image.png

export JMETER_HOME=/home/langzm/apache-jmeter-3.2
export JAVA_HOME=/opt/java/jdk1.8.0_91
export JAVA_BIN=/opt/java/jdk1.8.0_91/bin
export PATH=$PATH:$JAVA_HOME/bin:$JMETER_HOME/bin

配置以后,执行source ~/.bashrc 或者 source /home/username/.bashrc,在哪儿执行都没有问题。
安装成功的标志:

image.png
image.png

  1. 配置slave
    在配置安装完 Java 和 Jmeter 后,我们要配置两个地方,slave 的IP和端口。

分别在s1、s2、s3(slave机器)上,进入%JMETER HOME%/bin/目录,
打开“jmeter.properties”,配置执行机远程启动端口(默认为 1099),
如改为:
server_port=1099
server.rmi.localport=1099

打开“jmeter-server”,配置执行机远程启动IP
如改为:
DIRNAME=dirname $0
RMI_HOST_DEF=-Djava.rmi.server.hostname=10.31.121.115

启动slave server:

 

image.png
image.png

Using local port: 1099
Created remote object: UnicastServerRef [liveRef: [endpoint:10.31.121.115:1099,objID:[-19017b68:15d1c7583bc:-7fff, -5417132512864584786]]]

之前没有配置1099端口和IP,造成如下情况:

image.png
image.png

后果是master 连不上slave,没有starting ...连接成功的log。


  1. 配置master
    在配置安装完 Java 和 Jmeter 后,进入%JMETER HOME%/bin/目录,
    编辑 jmeter.properties 这个文件,修改添加:
    remote_hosts=172.16.129.155:1099,172.16.129.43:1099
    (slave的IP)
    server_port=1099
    client.rmi.localport=0
    server.rmi.port=1234
    server.rmi.localport=1099

进入%JMETER HOME%/bin/目录,编辑 jmeter.bat这个文件,修改添加:
set rmi_host=-Djava.rmi.server.hostname=本机ip(控制器ip)
Set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%


  1. non-gui 下,run Jmeter 脚本

参考文档:
http://www.cnblogs.com/fengpingfan/p/5586711.html
这个可以推荐看一下,我就硬搬过来了,

先附上参数表:

image.png
image.png

Demo 1:执行最简单的Jmeter例子

自己写个test job,里面只访问百度,然后把job 放到master 上面去跑;


image.png
image.png

baidu.jmx 配置好后,copy到master;

image.png
image.png

command:
jmeter -n -t baidu.jmx

Demo 2:指定Jmeter结果文件及日志路径

Demo 3:分布式(远程)执行默认服务器列表

Demo 4:分布式(远程)执行执行服务器列表

Demo 5:多个分布式(远程)执行执行服务器

jmeter -n -t /home/langzm/apache-jmeter-3.2/testcase/demo_500.jmx -R 11.71.161.115:1099,11.27.221.182:1099,11.81.198.142:1099 -l /home/langzm/apache-jmeter-3.2/result/demo_1500QPS_3.csv

待续。。。



========================================================

在进行性能测试的时候,随着压力的不断增大,会出现tps的瓶颈。

出现瓶颈,会有两个原因,1.服务器导致的瓶颈 ,2压力不够。

如果是压力不够的情况,要么换更好的机器进行压测,或者多台机器进行分布式压测。

Jmeter 如何开展分布式?

原理如下:

1.Jmeter分布式压测时,一台机器作为master,其他的则为slave,master负责请求的分发,slave负责执行。

2.执行时,master会把脚本发送到每台slaver上,slaver 拿到脚本后就开始执行,slaver执行时不需要启动GUI,如果引用到csv等外部的文件,则每台slaver所在的机器都需要相应位置放置该文件。

3.执行完成后,slaver会把结果回传给master,master会收集所有slaver的信息并汇总。

这里有一个坑,如果slave 和master是多网卡的机器,master去slave执行的时候,会把网卡中的任意一个网卡ip传过去,最后slave执行完后,把结果回传给master,如果这时回传给master是一个错误的ip,则会导致请求超时的情况,导致失败。

正确步骤如下:

1.启动slave,在slave机中jmeter-server中

windows 修改RMI_HOST_DEF=-Djava.rmi.server.hostname=10.120.11.82(slave机的ip)

运行jmeter-server,Windows运行jmeter-serve.bat

linux:

 ./jmeter-server -Djava.rmi.server.hostname=10.120.11.82(slave机的ip)

2.启动master

双网卡需要注意:master机需要指定自己机器的ip,要不则会出问题。

window:

新增set rmi_host=-Djava.rmi.server.hostname=10.120.11.214(master 的ip)

修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%

linux:

新增 rmi_host=“-Djava.rmi.server.hostname=10.120.11.214”(master 的ip)

修改ARGS="$SERVER $DUMP $HEAP $NEW $SURVIVOR $TENURING $PERM $CLASS_UNLOAD $rmi_host"

 修改完了后,开始压力测试:

windows:

修改jmeter.properties,

remote_hosts=10.120.11.82:1099(更换为slave的ip)

远程启动这台机器

linux:

./jmeter -n -t testPlan.jmx  -R 115.28.108.130 -l remote.jtl

linux下运行结果存在remote.jtl中。

 

注意:master和slave机中的jmeter版本必须一致(小版本也得一致)。

java的版本也得一致,不能一个java7一个java8.

 

 

六.报告解析

摘自:https://www.cnblogs.com/miaomiaokaixin/p/6118081.html

命令行的方式执行完成jmeter后,会生成jtl文件,里面打开后就是一行行的测试结果,

 <httpSample t="1" lt="1" ts="1450684950333" s="true" lb="app.testdelay" rc="200" rm="OK" tn="appdelay-3000g3m 1-1" dt="" by="2265"/>

  • t表示从请求开始到响应结束的时间
  • lt表示整个的空闲时间
  • ts表示访问的时刻
  • s表示返回的结果true表示成功,false表示失败
  • lb表示标题
  • rc表示返回的响应码
  • rm表示响应信息
  • tn表示线程的名字“1-138”表示第1个线程组的第138个线程。
  • dt表示响应的文件类型
  • by表示请求和响应的字节数

  

即便知道每个代表的含义,但是我们肉眼还是难以直观的看到性能如何,所以我们可以将jtl文件进行转换,转成肉眼能够直观看懂的图表、csv等形式,下面讲解jtl文件转换的几种方式:(jmeter系列博文用的例子都是并发测试百度接口,由于百度本身机制不允许短时间并发访问所以看到我的结果都是失败的,这里做下说明,各位真实测试使用自己的jmx脚本的时候一般不会如此)

1:命令行模式将jtl转成测试图表-注意此方法只使用jmeter3.0以后版本

  • 第一种:在测试过程中将jtl转成测试报告(在jmeter的bin目录下执行)

./jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport

参数说明:

    -n : 非GUI 模式执行JMeter
    -t : 执行测试文件所在的位置及文件名
    -r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r
    -l : 指定生成测试结果的保存文件, jtl 文件格式
    -e : 测试结束后,生成测试报告
    -o : 指定测试报告的存放位置
    -o 指定的文件及文件夹,必须不存在 ,否则执行会失败,对应上面的命令就是resultReport文件夹必须不存在否则报错
 
如上命令执行,可以看到控制台开始打印数据了
运行完成后,可以在指定的目录下看到生成结果文件夹/home/tester/apache-jmeter-3.0/resultReport
我们可以将该文件夹下载到本地windows机器,然后用浏览器打开index.html文件就能看到报告内容了
首页Dashboard:
解释:
file:文件名
start time:开始时间
end time:结束时间
filter for display:过滤器
APDEX(Application performance Index):应用程序性能指标,计算每笔交易APDEX的容忍和满足阈值基于可配置的值,范围在 0-1 之间,1表示达到所有用户均满意
T(Toleration threshold):容忍或满意阈值
F(Frustration threshold):失败阈值
requests summary中KO指失败率,OK指成功率
 
首页Dashboard:页面滚动条往下拉:
解释:
statistics:数据分析, 基本将 Summary Report 和 Aggrerate Report 的结果合并,含义分别为:
请求名称、请求数目、失败请求数目、错误率(本次测试中出现错误的请求的数量/请求的总数)、90%用户响应时间、95%用户响应时间、99%用户响应时间、吞吐量(吞吐量——默认情况下表示每秒完成的请求数Request per Second,当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数)、Kb/sec(每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec)、最小响应时间、最大响应时间
 
errors:错误情况,依据不同的错误类型,将所有错误结果展示
 
Chart-Over Time-Response Times Over Time:随着时间推移响应时间变化趋势图
可以看到历时3分钟,响应时间由0.334ms慢慢下滑到0.225ms
 
Chart-Over Time-Bytes Throughput Over Time:随着时间推移每秒接收和请求字节数变化趋势图,蓝色为每秒发送字节数,黄色为每秒接收字节数:
 
Chart-Over Time-Latencies Over Time:随着时间推移平均响应延时趋势图,记录客户端发送请求完成后,服务器端返回请求之前这段时间
由于我测试用的并发请求百度,请求都被拒绝了,并没有收到从服务端返回的请求,所以这里看到一条0的线
 
以上就是over time栏的所有图表,除了over time还有throuput和response times栏
throuput栏:
Throughput栏包括:
hits per second:每秒点击率
codes per second:每秒状态码数量
Transactions per second:每秒事务量
Response Time Vs Request: 响应时间点请求的 成功/失败 数
Latency Vs Request: 延迟时间点请求的 成功/失败 数
 
Response Times栏:
 
response times栏包括:
Response Time Percentiles: 响应时间百分比
Active Threads Over Time: 随着时间推移活跃线程数
Time Vs Threads: 测试过程中的线程数时续图
Response Time Distribution: 响应时间分布
 
  • 第二种:使用之前的测试结果,生成测试报告

./jmeter -g baidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport

-g : 指定已存在的测试结果文件
-e :测试结果后,生成测试报告
-o : 指定测试报告的存放位置
-o 指定的文件及文件夹,必须 不存在 ,否则执行会失败

 第一种和第二种其实最终都依赖生成的jtl文件,将jtl文件生成测试报告。双击测试报告中的index.html文件即可查看报告内容

 

2:插件模式将jtl转成测试图表

  • 第三种:利用GUI页面图形化展示jtl文件数据

下载插件JMeterPlugins-Extras.jar、CMDRunner.jar、JMeterPlugins-Standard.jar放到本地windows机器的jmeter的lib/ext目录下,插件可以去官网下载,这里我也给出我的插件地址(只需解压缩拷贝其中lib包下的jar文件到lib/ext目录下即可):http://pan.baidu.com/s/1pLexxcZ 密码:f4rb

在windows机器上需要安装jmeter,下载的插件放在jmeter安装目录的lib/ext目录下,然后去bin目录下双击jmeter.bat打开jmeter的gui页面

在线程组下面添加你想要的监听器,然后点击监听器页面的浏览按钮,选择你想浏览的jtl文件,等待一会,就能出现你想要的图形报告

以jp@gc - Bytes Throughput Over Time为例:

第一步:添加该监听器,当我们把下载的jar包放到lib/ext下面然后重启jmeter后,监听器中就会多出很多的扩展监听插件,选择你关注的结果插件即可

 

第二步:选择你要浏览的jtl文件,监听器添加成功后,在监听器页面都会有一个浏览按钮,点击浏览按钮找到并选择你要看的jtl文件

 

第三步:点击打开后,等待一会,就能在相应的监听器页面看到你想要看到的结果了

如果你还想要看其他的数据比如聚合报告,吞吐量,响应时间等等一切你关心的数据,按上面的3个步骤走一遍就行

 

  • 第四种:利用CMDRunner.jar插件用命令行的方式将jtl转成想要的png或者csv形式,这个方式比3的好处在于3利用gui页面有时jtl文件数据量很大可能要等很久

首先进入lib\ext目录下,然后去执行响应的命令

cd F:\apache-jmeter-3.0\apache-jmeter-3.0\lib\ext

java -jar CMDRunner.jar  --tool Reporter --generate-png baidu_ThreadsStateOverTime.png --input-jtl baidu_requests_results.jtl --plugin-type   TransactionsPerSecond

cmd运行上面的命令,结果在lib\ext目录下可以看到生成了一个baidu_ThreadsStateOverTime.png图片:

 

双击打开png图片,就能看到想要的图形效果

 

注意此处的的图片是断续的共15分钟,这跟jtl有关,测试时jtl文件如果不删除或清空,下一次测试的数据会追加到jtl的末尾,所以可以看到上面的图片中我的测试结果分了3次3分钟,其余时间其实是并没有进行测试的情况。

 

命令解析:

命令最后有个命令类型:TransactionsPerSecond,除了这个还支持如下命令类型:

 ThreadsStateOverTime、 BytesThroughputOverTime、 HitsPerSecond、 LatenciesOverTime、 ResponseCodesPerSecond、 ResponseTimesDistribution、

 ResponseTimesOverTime、 ResponseTimesPercentiles、 ThroughputVsThreads、 TimesVsThreads、 PageDataExtractorOverTime、 PerfMon

 

我们可以用一个windows的bat批处理文件,来执行上面的命令,命令执行完以后去相应目录下收取结果png图片就可以了

最后一行PerfMon:服务器参数随时间变化曲线注意这个需要在jmx脚本中添加,服务器监控,要指定ip、端口、监控项,还需要指定perfMon的输出文件,或者在命令行指定,如./jmeter -n -t baidu.jmx -l 2.jtp -JforcePerfmonFile=true,这样会输出在当前路径。

bat命令为:对文件名称和生成的jtl文件名以及CMDRunner.jar包路径可根据需要修改

复制代码
 1 @echo off
 2 set file="interface"
 3 set jtlfile="interface_test.jtl"
 4 f:
 5 cd F:\apache-jmeter-3.0\apache-jmeter-3.0\lib\ext
 6 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ThreadsStateOverTime.png --input-jtl  %jtlfile%  --plugin-type ThreadsStateOverTime
 7 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_BytesThroughputOverTime.png --input-jtl  %jtlfile%  --plugin-type BytesThroughputOverTime
 8 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_HitsPerSecond.png --input-jtl  %jtlfile%  --plugin-type HitsPerSecond
 9 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_LatenciesOverTime.png --input-jtl  %jtlfile%  --plugin-type LatenciesOverTime
10 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ResponseCodesPerSecond.png --input-jtl  %jtlfile%  --plugin-type ResponseCodesPerSecond
11 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ResponseTimesDistribution.png --input-jtl  %jtlfile%  --plugin-type ResponseTimesDistribution
12 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ResponseTimesOverTime.png --input-jtl  %jtlfile%  --plugin-type ResponseTimesOverTime
13 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ResponseTimesPercentiles.png --input-jtl  %jtlfile%  --plugin-type ResponseTimesPercentiles
14 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ThroughputVsThreads.png --input-jtl  %jtlfile%  --plugin-type ThroughputVsThreads
15 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_TimesVsThreads.png --input-jtl  %jtlfile%  --plugin-type TimesVsThreads
16 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_TransactionsPerSecond.png --input-jtl  %jtlfile%  --plugin-type TransactionsPerSecond
17 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_PageDataExtractorOverTime.png --input-jtl  %jtlfile%  --plugin-type PageDataExtractorOverTime
18 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_PerfMon.png --input-jtl  %jtlfile%  --plugin-type PerfMon
复制代码

 

 双击该bat文件后,我们在lib\ext目录下去看,就可以看到生成了很多png图片

关心哪个图表直接双击打开即可,这样就方便很多了。

当然除了生成png,还可以生成csv文件,如:

复制代码
 1 @echo off
 2 set file="interface"
 3 set jtlfile="interface_test.jtl"
 4 f:
 5 cd F:\apache-jmeter-3.0\apache-jmeter-3.0\lib\ext
 6 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_PerfMon.csv --input-jtl  %jtlfile%  --plugin-type AggregateReport
 7 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_PerfMon.csv --input-jtl  %jtlfile%  --plugin-type SynthesisReport
 8 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ThreadsStateOverTime.csv --input-jtl  %jtlfile%  --plugin-type ThreadsStateOverTime
 9 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_BytesThroughputOverTime.csv --input-jtl  %jtlfile%  --plugin-type BytesThroughputOverTime
10 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_HitsPerSecond.csv --input-jtl  %jtlfile%  --plugin-type HitsPerSecond
11 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_LatenciesOverTime.csv --input-jtl  %jtlfile%  --plugin-type LatenciesOverTime
12 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ResponseCodesPerSecond.csv --input-jtl  %jtlfile%  --plugin-type ResponseCodesPerSecond
13 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ResponseTimesDistribution.csv --input-jtl  %jtlfile%  --plugin-type ResponseTimesDistribution
14 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ResponseTimesOverTime.csv --input-jtl  %jtlfile%  --plugin-type ResponseTimesOverTime
15 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ResponseTimesPercentiles.csv --input-jtl  %jtlfile%  --plugin-type ResponseTimesPercentiles
16 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ThroughputVsThreads.csv --input-jtl  %jtlfile%  --plugin-type ThroughputVsThreads
17 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_TimesVsThreads.csv --input-jtl  %jtlfile%  --plugin-type TimesVsThreads
18 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_TransactionsPerSecond.csv --input-jtl  %jtlfile%  --plugin-type TransactionsPerSecond
19 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_PageDataExtractorOverTime.csv --input-jtl  %jtlfile%  --plugin-type PageDataExtractorOverTime
复制代码

双击该bat文件,然后去对应目录下就能看到生成了很多csv文件,比如AggregateReport.csv就是聚合报告

好了,以上就是jmeter的jtl文件查看方式了

 

 

 

 

 

待续

 

posted @ 2019-08-28 16:29  念槐聚  阅读(1095)  评论(0)    收藏  举报