shell脚本处理jmeter压测结果的响应时间数据

统计jmeter的压测结果数据结果文件xxx.jtl,统计其响应时间的比例

统计粒度:小于10ms,20ms,30ms...100ms,200ms,300ms

脚本实现思想:

统计数据结果文件的总行数sum,统计小于特定时间(如10ms)的行数ms10,算出其百分比rate=(ms10 / sum)%

jmeter的jtl文件格式如下:

1560851442660,231,HTTP Request,200,OK,Thread Group 1-97,text,true,,1369,396,100,100,http://domain/interface/?a=x,231,0,1

根据这样的格式可以筛选我们需要的值,如第二个值$2,第15个值$15,响应时间,$2与$15绝大部分是一样的,误差在万分之一,考虑到文本工具处理速度,我这里采用$2

# 统计总请求数即文件的总行数

sum=`cat $filename | awk -F "," '{ if($2>0) { print $2}}' | wc -l`

# 统计响应时间小于10ms的请求数

ms10=`cat $filename | awk -F "," '{ if($2<10) { print $2}}' | wc -l`

# 计算并打印响应时间小于10ms的请求数占总请求数的占比

echo -n "less than 10ms : " ; echo "scale=2; $ms10 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'

运行结果如下:

运行命令:sh analyse.sh u100.jtl

结果说明:小于1%的不展示,脚本的精度是百分位

 

完整脚本:

filename=$1

sum=`cat $filename | awk -F "," '{ if($2>0) { print $2}}' | wc -l`
ms10=`cat $filename | awk -F "," '{ if($2<10) { print $2}}' | wc -l`
ms20=`cat $filename | awk -F "," '{ if($2<20) { print $2}}' | wc -l`
ms30=`cat $filename | awk -F "," '{ if($2<30) { print $2}}' | wc -l`
ms40=`cat $filename | awk -F "," '{ if($2<40) { print $2}}' | wc -l`
ms50=`cat $filename | awk -F "," '{ if($2<50) { print $2}}' | wc -l`
ms60=`cat $filename | awk -F "," '{ if($2<60) { print $2}}' | wc -l`
ms70=`cat $filename | awk -F "," '{ if($2<70) { print $2}}' | wc -l`
ms80=`cat $filename | awk -F "," '{ if($2<80) { print $2}}' | wc -l`
ms90=`cat $filename | awk -F "," '{ if($2<90) { print $2}}' | wc -l`
ms100=`cat $filename | awk -F "," '{ if($2<100) { print $2}}' | wc -l`
ms150=`cat $filename | awk -F "," '{ if($2<150) { print $2}}' | wc -l`
ms200=`cat $filename | awk -F "," '{ if($2<200) { print $2}}' | wc -l`
ms250=`cat $filename | awk -F "," '{ if($2<250) { print $2}}' | wc -l`
ms300=`cat $filename | awk -F "," '{ if($2>300) { print $2}}' | wc -l`

#percentage
echo -n "less than 10ms : " ; echo "scale=2; $ms10 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 20ms : " ; echo "scale=2; $ms20 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 30ms : " ; echo "scale=2; $ms30 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 40ms : " ; echo "scale=2; $ms40 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 50ms : " ; echo "scale=2; $ms50 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 60ms : " ; echo "scale=2; $ms60 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 70ms : " ; echo "scale=2; $ms70 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 80ms : " ; echo "scale=2; $ms80 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 90ms : " ; echo "scale=2; $ms90 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 100ms : " ; echo "scale=2; $ms100 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 150ms : " ; echo "scale=2; $ms150 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 200ms : " ; echo "scale=2; $ms200 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 250ms : " ; echo "scale=2; $ms250 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'
echo -n "less than 300ms : " ; echo "scale=2; $ms300 / $sum" | bc | awk -F "." '{print $2"%"}' | sed s'/^0//'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值