Jmeter Summariser report及其可视化
Jmeter summariser report的设置在:bin/jmeter.properties
#---------------------------------------------------------------------------
# Summariser - Generate Summary Results - configuration (mainly applies to non-GUI mode)
#---------------------------------------------------------------------------
#
# Define the following property to automatically start a summariser with that name
# (applies to non-GUI mode only)
summariser.name=summary
#
# interval between summaries (in seconds) default 3 minutes
summariser.interval=180
#
# Write messages to log file
summariser.log=true
#
# Write messages to System.out
#summariser.out=true
以上设置每隔3分钟向jmeter.log中写入一行log
# Combined log file (for jmeter and jorphan)
log_file=jmeter.log
log的格式如下:
2017-11-21 15:49:14,389 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-100
2017-11-21 15:49:14,392 INFO o.a.j.p.h.s.HTTPHC4Impl: HTTP request retry count = 0
2017-11-21 15:49:14,408 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times
2017-11-21 15:49:14,411 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
2017-11-21 15:49:14,411 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true
2017-11-21 15:49:14,411 INFO o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000
2017-11-21 15:49:30,006 INFO o.a.j.r.Summariser: summary + 4857 in 00:00:16 = 308.1/s Avg: 258 Min: 22 Max: 7941 Err: 0 (0.00%) Active: 100 Started: 100 Finished: 0
2017-11-21 15:50:00,002 INFO o.a.j.r.Summariser: summary + 11529 in 00:00:30 = 384.3/s Avg: 271 Min: 30 Max: 21225 Err: 0 (0.00%) Active: 100 Started: 100 Finished: 0
2017-11-21 15:50:00,003 INFO o.a.j.r.Summariser: summary = 16386 in 00:00:46 = 358.1/s Avg: 267 Min: 22 Max: 21225 Err: 0 (0.00%)
2017-11-21 15:50:30,004 INFO o.a.j.r.Summariser: summary + 12104 in 00:00:30 = 403.5/s Avg: 233 Min: 43 Max: 15109 Err: 31 (0.26%) Active: 100 Started: 100 Finished: 0
2017-11-21 15:50:30,005 INFO o.a.j.r.Summariser: summary = 28490 in 00:01:16 = 376.0/s Avg: 252 Min: 22 Max: 21225 Err: 31 (0.11%)
2017-11-21 15:51:00,002 INFO o.a.j.r.Summariser: summary + 12112 in 00:00:30 = 403.8/s Avg: 268 Min: 44 Max: 84469 Err: 51 (0.42%) Active: 100 Started: 100 Finished: 0
2017-11-21 15:51:00,003 INFO o.a.j.r.Summariser: summary = 40602 in 00:01:46 = 383.9/s Avg: 257 Min: 22 Max: 84469 Err: 82 (0.20%)
2017-11-21 15:51:30,017 INFO o.a.j.r.Summariser: summary + 11994 in 00:00:30 = 399.6/s Avg: 245 Min: 40 Max: 17814 Err: 42 (0.35%) Active: 100 Started: 100 Finished: 0
2017-11-21 15:51:30,018 INFO o.a.j.r.Summariser: summary = 52596 in 00:02:16 = 387.4/s Avg: 254 Min: 22 Max: 84469 Err: 124 (0.24%)
2017-11-21 15:52:00,003 INFO o.a.j.r.Summariser: summary + 12153 in 00:00:30 = 405.3/s Avg: 250 Min: 34 Max: 13470 Err: 26 (0.21%) Active: 100 Started: 100 Finished: 0
2017-11-21 15:52:00,004 INFO o.a.j.r.Summariser: summary = 64749 in 00:02:46 = 390.6/s Avg: 254 Min: 22 Max: 84469 Err: 150 (0.23%)
2017-11-21 15:52:30,069 INFO o.a.j.r.Summariser: summary + 12318 in 00:00:30 = 409.7/s Avg: 234 Min: 40 Max: 14107 Err: 17 (0.14%) Active: 100 Started: 100 Finished: 0
2017-11-21 15:52:30,070 INFO o.a.j.r.Summariser: summary = 77067 in 00:03:16 = 393.5/s Avg: 250 Min: 22 Max: 84469 Err: 167 (0.22%)
2017-11-21 15:53:00,004 INFO o.a.j.r.Summariser: summary + 11864 in 00:00:30 = 396.3/s Avg: 253 Min: 39 Max: 25669 Err: 33 (0.28%) Active: 100 Started: 100 Finished: 0
summary +是这三分钟的数据,summary =是累计到当前时刻所有的数据
以黄色区域数据为例,4857是发出的请求数目,00:00:16是发出的时间, 308.1是每秒发出的请求,即吞吐量,Avg, Min, Max分别是平均响应时间,最小响应时间和最大响应时间,响应时间指的是从请求发出到收到响应的时间,Err后面跟的数据分别是错误数和错误比例。
对于summariser报告,可以通过写一个简单的脚本来解析并作图形化展示,下面是用python写的一个简单脚本,可以画平均时延和吞吐量,使用方法是
python summary.py test.log,下面是summary.py内容:
import matplotlib.pyplot as plt
import re
import sys avgtime_data=[]
mintime_data=[]
maxtime_data=[]
throughput_data=[] logfile=open(sys.argv[1])
try:
while True:
line=logfile.readline()
if line=='':
break
if line.startswith('summary ='):
result=re.split(r'\s+', line)
avgtime_data.append(result[8])
throughput=result[6]
throughputvalue=throughput[:-2]
throughput_data.append(throughputvalue)
finally:
logfile.close() plt.figure(figsize=(8,4))
plt.ylim(0,60)
plt.plot(avgtime_data,color="red",label="Avg ResponseTime (milliseconds)")
plt.plot(throughput_data,color="green",label="ThroughPut (/s)")
frame = plt.gca()
frame.axes.xaxis.set_ticklabels([])
plt.xlabel("Duration, 2013/06/25 16:30:00 -- 2013/06/28 6:00:00, about 60 hours")
plt.title("sundong Jmeter Test Report")
plt.legend()
plt.show()
注意里面用到了正则表达式,其实在log文件非常大的时候,每行都进行正则匹配,效率是很低的。分享下我们项目使用的切片方法写的rpc-server,效率要高出10几倍
import sys reload(sys)
sys.setdefaultencoding('utf8')
import zerorpc class RPCServer(object):
def getLogData(self,filename):
avgtime_data=[]
throughput_data=[]
tps_data=[]
tpsput_data=[]
with open(filename, 'r') as f:
for line in f:
if 'summary =' in line:
rs = line.split('Avg:')
avgtime_data.append(rs[1][0:6])
throughput_data.append(rs[0][-10:-3]) return avgtime_data,throughput_data s = zerorpc.Server(RPCServer())
s.bind("tcp://0.0.0.0:4242")
s.run()
通过rpc server获取jmeter master的log日志里的数据,应用通过rpc client进行调用
参考:
1、http://blog.csdn.net/just_lion/article/details/9209253
Jmeter Summariser report及其可视化的更多相关文章
- Jmeter Dash Report(HTML Report)删除Hits Per Second graph的方法
通过命令行 Non GUI的方式执行jmeter的jmx脚本可以生成HTML Report(Dash Report). 这个report默认自带了很多种图表报告,比如statistics,Over t ...
- 【Jmeter】 Report Dashboard 生成html图形测试报告
背景 最近在学习Jmeter相关的东西,今天看了下Jmeter的官方文档,没想到在入门指南(Getting Started)第二条中就看到了让人惊喜的东西:可以利用既有测试数据生成HTML格式的Rep ...
- Jmeter Aggregate Report 与 Summary Report 分析
关于Aggregate Report和 Summary Report里面每个字段的说明,在网上有很多资料,在此不做说明. 本文主要讲Aggregate Report与Summary Report对比我 ...
- jmeter Dashboard Report
说明:详情参考:https://jmeter.apache.org/usermanual/generating-dashboard.html JMeter3.0以后引入了Dashboard Repor ...
- jmeter summariser(命令行执行时的输出) 、查看结果树等结果中文乱码
在使用jmeter测试时,如果你的sampler名字为中文.或者输出的结果信息有中文,你会发现它们都是乱码,非常蛋碎!原因是: jmeter的默认编码为:ISO-8859-1, 解决方案就是要修改它 ...
- JMeter+Grafana+Influxdb搭建可视化性能测试监控平台(待继续完善。。。)
influxdb下载.安装.配置.启动 InfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统. 下载: ...
- JMeter+Grafana+Influxdb搭建可视化性能测试监控平台(使用了docker)
[运行自定义镜像搭建监控平台] 继上一篇的帖子 ,上一篇已经展示了如何自定义docker镜像,大家操作就行 或者 用我已经自定义好了的镜像,直接pull就行 下面我简单介绍pull下来后如何使用 拉取 ...
- jmeter静默压测+可视化
静默压测自动化脚本auto_stress_test.sh #!/usr/bin/env bash export jmx_template="test2" export suffix ...
- JMeter非GUI模式下日志介绍
Creating summariser <summary> Created the tree successfully using /opt/JMeter/TestPlan/test.jm ...
随机推荐
- Splay的用法
splay区间增减查询 #include<cstdio> #include<algorithm> using namespace std; ; const int INF = ...
- java内存模型学习
根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 虚拟机的内存模型分为两部分:一部分是线程共享的,包括 Java 堆和方法区:另一部分是线程私有的,包括虚拟 ...
- python补漏----isinstance 和 issubclass
一.isinstance Python 中的isinstance函数 isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo) 如果参数o ...
- Android Webview 与JS交互
Android中 WebView控件支持JS与本地代码的交互. // 是否允许在webview中执行javascript webSettings.setJavaScriptEnabled(true); ...
- iOS--app自定义相册--创建相簿,存储图片到手机
我们在APP中点击照片,都会显示出大图,然后在大图的上面会有个保存照片的按钮,照片直接保存到了系统的相册中,但是因为公司产品的需要,让你创建和APP同名的相册保存在里面,那么就对了,可以看下具体的代码 ...
- 【Vijos1222】等值拉面(DP)
题意:有N个数对(a[i],b[i]) 每次可以把(x,y)变成(x+a[i],y+b[i])或(x+b[i],x+a[i]),后者称为交换一次 求使abs(x-y)最小时的最小交换次数 n<= ...
- 【Vijos1534】高性能计算机(DP)
题意:有NA个A与NB个B两种任务需要完成,完成一段长度为X的A任务需要时间ta+ka*x*x,B任务类似,连续的同一种任务不能分成两段运行 有P台可以并行运算的计算机,求最快完成所有任务的时间 1≤ ...
- javap的基本用法
参考:http://www.cnblogs.com/beautiful-code/p/6424977.html javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码.通过它,我们 ...
- grep用法详解:grep与正则表达式【转】
转自:http://blog.csdn.net/hellochenlian/article/details/34088179 grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配 ...
- static变量的生命周期
static生命周期 2011-07-15 16:01 静态变量的类型说明符是static.静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式, ...