• Jmeter3.1 使用及新增报告功能


    一、JMeter官网

    下载地址
    http://jmeter.apache.org/download_jmeter.cgi

    Jmeter wiki
    https://wiki.apache.org/jmeter

    二、概念

    ElapsedTime
    消耗时间,与ResponseTime/SampleTime一致,表示开始请求到响应接收完毕的时间;

    Latency
    延迟时间,仅包括开始请求到准备接收响应的时间;

    90% Line
    一种时间度量指标,表示90%的请求都在该响应时间内完成;

    Throughput
    吞吐量,指每秒处理的请求数;
    公式:Throughput=(number of requests) / (total time)

    吞吐量与响应时间/并发数的关系:
    TPS=U_concurrent/(T_response+T_think)
    其中T_think为用户思考时间

    ThreadGroup
    线程组,用于控制并发请求的组件;
    设置参数

    1. 线程数量,控制并发数量
    2. rame-up周期,线程柔和增长周期,比如100个线程的增长周期是10s,那么1s增加10个线程
    3. 固定请求数量
    4. 循环执行设置,可指定开始和结束时间

    SummaryReport
    聚合报告,结果指标包括:

    属性描述
    label 每个样本的名称
    samples 测试请求总数量
    average 平均响应时间
    median 50%用户的响应时间
    90%line 90%用户的响应时间
    min 最小响应时间
    max 最大响应时间
    error% 错误发生率
    recv KB/s 每秒接收的数据量
    throughput 吞吐量(TPS)

    三、启动停止

    GUI启动

    ./jmeter.bat

    命令行启动

    jmeter -n -t xxx.jmx

    停止测试

    //平滑停止(gracefully stop, thread will stop at next opportunity)
    ./bin/shutdown.sh  
    
    //立即停止(will kill thread directory)
    ./bin/stoptest.sh 

    四、使用变量

    properties文件

    Jmeter主要的配置文件

    1. jmeter.properties,定义jmeter运行的关键配置;
    2. system.properties,定义Java进程的系统变量,通过System.getProperties()可查询;
    3. user.properties,自定义配置,可覆盖jmeter.properties

    命令行启动

    -J 指定本地JMeter变量
    -D 指定Java系统变量
    -G 指定全局JMeter变量,在远程测试时会传输到测试节点

    样例

    PATH=$PATH:/opt/local/jre/bin
    JVM_ARGS="-Xmx2048m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k"
    jmeter -Jmongo.host=xxx -Jmongo.port=xxx -n -t test.jmx

    JVM_ARGS 用于指定JVM大小,-n指定了no-gui模式启动
    -Gglobal.properties可代替-Gvar=value的方式

    引用方式

    在测试计划中可通过函数对变量进行引用:

    ${__P(varName,defaultValue)}

    五、远程测试

    1. 将jmeter部署到远程节点,启动server
    PATH=$PATH:/opt/local/jre/bin
    JVM_ARGS="-Xmx2048m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k"
    
    ./bin/jmeter-server &

    端口设置
    Jmeter-server采用RMI实现通讯,默认端口为1099
    可编辑user.properties进行修改:

    server_port=1999
    1. 本地配置远程节点

    修改user.properties:

    remote_hosts=xxx:1999
    1. 命令行执行

    配置好远程节点之后,可直接通过GUI客户端执行测试,然而在自动化的场景下往往需要采用命令行方式执行:

    //启动全部远程节点测试
    jmeter -Gmongo.host=xxx -Gmongo.port=xxx -n -t test.jmx -r
    
    //指定部分远程节点测试
    jmeter -Gmongo.host=xxx -Gmongo.port=xxx -n -t test.jmx -R192.168.0.100:1999,192.168.0.101:1999
    
    //停止远程节点测试
    jmeter -Gmongo.host=xxx -Gmongo.port=xxx -n -t test.jmx -R192.168.0.100:1999,192.168.0.101:1999 -Z

    六、生成报告

    jtl文件
    Jmeter 执行测试后可生成jtl/csv/xml的结果文件,通过在结果监听器中添加输出路径可获得。
    也可以通过命令行方式直接输出,如:(-1是小写字母L哦,不要写错了)

    • 基本命令格式: 
      jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>
    • 样例: 
      jmeter -n -t F:\PerformanceTest\TestCase\script\getToken.jmx -l testLogFile -e -o ./output

    执行成功后会在\apache-jmeter-3.0\bin\output目录下产生如下文件(夹):

     

    html报告
    Jmeter3.x支持直接生成HTML格式的报告,可参考详细说明

    1. 直接生成报告

      jmeter -n -t test.jmx -l result.jtl -e -o /opt/local/jmeter/result/html

      -e 表示生成html报告,-o指定目标路径(必须为空)

    2. 从jtl文件中转换

      jmeter -g result.jtl -o /opt/local/jmeter/result/html

    定制报告

    修改user.properties:

    //按sample名称过滤
    jmeter.reportgenerator.sample_filter=find|update|delete|list|insert
    
    //APDEX模型-满足需求阈值(响应时间)
    jmeter.reportgenerator.apdex_satisfied_threshold=300
    
    //APDEX模型-可容忍阈值(响应时间)
    jmeter.reportgenerator.apdex_tolerated_threshold=1200
    
    //数据聚合频率,性能测试场景可适当减小,稳定性测试可加长,默认60s
    jmeter.reportgenerator.overall_granularity=5000

    关键报表
    ResponseTimeOverTime
    TransactionsPerSecond
    ActiveThreadOverTime
    ResponseTimePercentiesOverTime

    七、性能监控

    使用Perfmon插件,插件地址

    1. 部署ServerAgent
      将ServerAgent上传到目标服务器,执行startAgent.sh启动;
      默认情况下会启动4444,可修改启动端口:
    ./startAgent.sh --udp-port 7777 --tcp-port 7777
    1. 编辑Jmeter脚本文件,添加Perfmon监听器。
      可设置将监控数据输出到jtl文件用于后续分析

    2. 自动生成图片
      需借助JMeterPluginsCMD插件,下载地址
      命令行执行:

      JMeterPluginsCMD.sh --generate-png cpu.png --input-jtl perfmon-cpu.jtl --plugin-type PerfMon --width 800 --height 600

    八、常用插件

    SteppingThreadGroup

    插件地址
    Jmeter自带的ThreadGroup只能均匀增加线程,无法模拟更真实的压力场景;

    该插件支持更灵活的控制并发压力,如:

    初始启动20线程,此后每10秒钟增加5个线程,到达100个线程之后持续运行100s...

    CompositeGraph

    插件地址
    该插件将响应时间、吞吐量报表进行了组合,需依赖于其他几个插件。

    在观察服务器极限性能时比较有用,可用于权衡指定请求频度下并发数大小。
    通常情况下当并发数超过系统承受能力时,TPS出现明显下滑,响应时间持续上升。

    九、参考资料

    GitBook-Jmeter参考
    https://aimer1124.gitbooks.io/jmeter-tutorial/

    yukinami的博客
    http://yukinami.github.io/2015/11/26/性能测试指南/

    Jmeter逻辑控制器(总结的不错的一篇文章)
    http://www.guru99.com/controllers-in-jmeter.html

    Jmeter VS LoadRunner
    http://www.cnblogs.com/shuiyelifang/p/5749523.html

    TPS/响应时间/并发数的研究
    http://blog.csdn.net/wind19/article/details/8600083

  • 相关阅读:
    iOS 内存分配与分区
    iOS 静态库和动态库
    iOS 静态:动态 Pod
    iOS 架构
    基本控件文档-UIScrollView
    UIActivityIndicatorView
    UIControl事件
    UIDatePicker
    UIPageControl
    UIScrollView
  • 原文地址:https://www.cnblogs.com/kaola8023/p/6925816.html
Copyright © 2020-2023  润新知