​1 JMeter日志概览

jmeter日志文件保存在bin目录中,名称为jmeter.log。我们可以在面板中直接察看日志,点击右上角黄色标志物可以打开日志面板,再次点击收起

另外,JMeter可以很方便地设置日志输出级别:

通过这种方式修改日志级别,只是零时修改,不会改变配置文件中的值。当Jmeter重启后,又会恢复为默认的日志级别。

在Jmeter/bin 路径下打开 log4j2.xml文件,修改日志级别,这里修改该是永久性修改

通过修改Root level 值改变日志级别,该修改是永久性的。对Jmeter 的GUI页面运行脚本和命令模式运行脚本都会生效。

2 JMeter自定义日志

前面所看到的都是系统日志,也就是JMeter本身所打印的日志。如果我们自己想输出一些日志,该怎么办呢?这个一般就要借助Beanshell了。

在实际项目中,将JMeter脚本部署到Linux服务器上进行压力测试,存在一些日志详情查看的不便之处:

  1. 吞吐量统计中包括了所有请求,包括一些辅助请求(beanshell请求),导致真正的tps统计数据不准确。
  2. 业务是否成功,以及具体失败原因难以排查。

这就需要用到beanshell下的自定义日志。log.info,log.error,如用log.error()打印错误信息

import org.apache.log4j.Logger;// 获取接口的响应数据
String result = prev.getResponseDataAsString();if(result.contains("error")){Failure=true;log.error("接口失败: " + result);
}

当然,自定义日志最重要应用场景还是在Linux服务器上压测时,方便查看日志信息(因linux上无图形化界面)

比如,获取orderid时脚本

import org.apache.log4j.Logger;// 获取接口的响应数据
String result = prev.getResponseDataAsString();
// 从JSON提取器中获取code和orderId
String code = vars.get("code");
String orderId = vars.get("orderId");if(code.equals("0")){log.info("place order success, orderId=" + orderId);
}else{Failure=true;log.error("FailureMessage: " + result);
}

将该脚本上传到Linux中,顺便写个启动脚本:startup.sh

#!/bin/bash
jmeter_log=/home/xxx/jmeter.logif [ -f "$jmeter_log" ]; then// 将原日志文件备份后删除cp $jmeter_log /home/xxx/jmeter.log_backrm -rf $jmeter_log
fi
// 启动JMeter脚本
jmeter -n -t /home/xxx/test.jmx -l /home/xxx/result/test.jtl -j ../result/log/jmeter_error.log

命令解释:使用该命令调用jmeter进行性能测试,-n:命令模式运行,-t : 后面跟的是需要执行的脚本名称,-l :后跟的是聚合报告保存路径,-j :跟的是日志保存路径,

运行脚本后,cat jmeter_error.log即可查看日志详情

3 JMeter日志分析

针对该日志写一个日志分析脚本logAnalysis.sh

#!/bin/bash
jmeter_log=/home/test/jmeter.log
thread_num=`grep 'Thread started' $jmeter_log|tail -n 1|awk -F"-" '{print$6}'`
start_time=`grep 'All thread groups have been started' $jmeter_log|awk -F" " '{print $1,$2}'|awk -F"," '{print $1}'`
end_time=`grep 'Shutdown hook ended' $jmeter_log|awk -F" " '{print $1,$2}'|awk -F"," '{print $1}'`final_success_time=`grep "place order success" $jmeter_log|tail -n 1|awk -F" " '{print$1,$2}'|awk -F"," '{print$1}'`
success_running_time=$[ $(date -d "$final_success_time" +%s) - $(date -d "$start_time" +%s) ]
running_time=$[ $(date -d "$end_time" +%s) - $(date -d "$start_time" +%s) ]
cancle_times=`grep "cancle orders success" $jmeter_log|wc -l`   //撤单次数success_times=`grep success $jmeter_log|wc -l`   // 成功次数
failure_times=`grep FailureMessage $jmeter_log|wc -l`
request_times=$[ $success_times+$failure_times ]
error_rate=`echo "scale=2; $failure_times/$request_times*100" | bc`
qps=$[ $request_times/$running_time ]
throughput=$[ $success_times/$success_running_time ]echo -e '线程数:'$thread_num
echo -e '请求次数:' $request_times
echo -e '成功次数:' $success_times
echo -e '失败次数:' $failure_times
echo -e '撤单次数:'$cancle_times
echo -e '错误率:' $error_rate'%'
echo -e '开始时间:'$start_time
echo -e '结束时间:'$end_time
echo -e '最后成功请求时间:'$final_success_time
echo -e '请求时间:' $running_time
echo -e '成功运行时间:'$success_running_time
echo -e '吞吐量:'$throughput'/s'
echo -e 'QPS:'$qps'/s'

当JMeter脚本运行一段时间后,执行logAnalysis.sh,效果如下:

线程数:200
请求次数: 120000
成功次数:120000
失败次数: 0
错误率: 0%
...
吞吐量:9000/s
QPS:9000/s

可以看到,输出信息全面清晰。这样,我们就可以在linux下运行JMeter压测脚本时,实时获取压测详情了。

【jmeter】JMeter日志查看与日志分析相关推荐

  1. 查询linux服务器事物传输失败日志,查看fail2ban日志代替lastb查看登录失败记录

    之前我曾经用shell脚本提取lastb登录失败超过指定次数的IP加入到iptables,来禁止这些IP登录主机,达到防止恶意攻击的目的.后来为了给主机提供更全面的防护,又安装了fail2ban. 今 ...

  2. vsftp日志查看_vsftp日志xferlog格式分析(示例代码)

    1.开始vsftp记录日志.修改/etc/vsftpd/vsftpd.conf 如下: xferlog_enable=YES xferlog_std_format=YES xferlog_file=/ ...

  3. linux pg启动日志查看,pg日志分析

    pg 日志支持多种格式,一般的平面文本 还有csv 格式 在postgresql.conf 里把日志格式设为 csvlog  重新加载配置文件就可以了. 把csv 导入到数据库里分析,可以充分利用sq ...

  4. java 日志查看_Java日志

    日志对于一个系统来说非常重要,查找异常信息.分析系统运行情况等都需要用到日志.所以无论是JDK还是第三方都提供了关于日志的相关工具,本文分别介绍以下几种工具,以及各种工具间的整合.原理. JDK的ja ...

  5. vsftp日志查看_vsftp日志配置

    1.开始vsftp记录日志.修改/etc/vsftpd/vsftpd.conf 如下: xferlog_enable=YES xferlog_std_format=YES xferlog_file=/ ...

  6. vsftp日志查看_vsftp日志内容详解

    /var/log/xferlog 记录内容举例 Thu Sep 6 09:07:48 2007 7 192.168.57.1 4323279   /home/student/phpMyadmin-2. ...

  7. linux日志查看/项目日志查看/监控日志

    cat命令(不建议) 此命令实际上是打开/文本输出命令,不推荐使用,原因是日志的每条日志都输出 cat filename //打开/文本输出命令cat > filename //创建文件cat ...

  8. Java GC日志查看和分析

    GC日志查看 javaGC日志查看可以通过在java命令种加入参数来指定对应的gc类型,打印gc日志信息并输出至文件等策略. -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetai ...

  9. oracle10g异常日志查看

    oracle10g异常日志查看 警告日志:\oracle\product\10.2.0\db_1\admin\orcl\bdump\alert_orcl.log 监听日志:\oracle\produc ...

最新文章

  1. oracle10gr2 x86,Oracle10gR2 On RHEL5 x86安装技术文档(英文原版)
  2. 数据派翻译组招募 | 寻找最志同道合的你!
  3. 如何转换高度:0; 达到高度:自动; 使用CSS?
  4. Java学习_day006:嵌套循环与数组
  5. Lambda使用——JDK8新特性
  6. Android背景色渐变效果(shape,gradient) (转)
  7. TensorFlow(2)-训练数据载入
  8. linux环境安装LFTP_02
  9. oracle数据库定时同步工具,[每天自动同步一个数据库表的数据]sql server定时同步oracle数据表...
  10. Web Service-第一篇什么是Web Service
  11. microsoft excel 正在等待其他某个应用程序_(Mac常见问题)都有哪些应用程序可以在M1 Mac上运行?...
  12. CSS+DIV实现圆角
  13. 怎样做具有视觉冲击感的非主流照片
  14. app封装css本地,css封装
  15. Python数据可视化学习(初学中...)
  16. ERNIE3.0多分类任务应用详细教程代码
  17. 关于echarts数据二次渲染不成功
  18. 什么是哈希冲突,怎么解决哈希冲突的问题?
  19. 一文看懂GFS如何搭建
  20. 第二篇:个案管理师之执行篇-台湾最佳医院信息化及管理实践

热门文章

  1. kafka连接mysql数据库,Kafka-connect-jdbc-source连接mysql数据库实战
  2. 2010年西北工业大学机试第二题
  3. jackson 入门
  4. MySQL 判断是否周末
  5. 性能测试:一个完整的性能测试过程
  6. vscode保存自动格式化加逗号解决方法
  7. Angular Landing – Material Design Angular App Landing Page
  8. 用cookie登录KinhDown教程
  9. 如何制作gif表情包?试试这个gif表情包制作神器!
  10. 从Flink SQL doesn't support consuming update and delete changes 错误谈起