Jmeter压测工具使用总结

  • 一、经常使用测试工具对比

    一、loadrunner 性能稳定,压测结果及细粒度大,能够自定义脚本进行压测,可是太过于重大,功能比较繁多
    二、apache ab(单接口压测最方便) 模拟多线程并发请求,ab命令对发出负载的计算机要求很低,既不会占用不少CPU,也不会占用太多的内存,但却会给目标服务器形成巨大的负载, 简单DDOS攻击等
    三、webbench webbench首先fork出多个子进程,每一个子进程都循环作web访问测试。子进程把访问的结果经过pipe告诉父进程,父进程作最终的统计结果。
  • 二、Jmeter目录文件讲解

    bin:核心可执行文件,包含配置
    jmeter.bat: windows启动文件:
    jmeter: mac或者linux启动文件:
    jmeter-server:mac或者Liunx分布式压测使用的启动文件
    jmeter-server.bat:mac或者Liunx分布式压测使用的启动文件
    jmeter.properties: 核心配置文件

    extras:插件拓展的包
    lib:核心的依赖包
    ext:核心包
    junit:单元测试包html

  • 三、Jmeter基础功能组件介绍线程组和Sampler

    一、添加->threads->线程组(控制整体并发)
    线程数:虚拟用户数。一个虚拟用户占用一个进程或线程

    准备时长(Ramp-Up Period(in seconds)):所有线程启动的时长,好比100个线程,20秒,则表示20秒内100个线程都要启动完成,每秒启动5个线程
    循环次数:每一个线程发送的次数,假如值为5,100个线程,则会发送500次请求,能够勾选永远循环 java

    二、线程组->添加-> Sampler(采样器) -> Http
    (一个线程组下面能够增长几个Sampler)
    名称:采样器名称
    注释:对这个采样器的描述 mysql

    web服务器:
    默认协议是http
    默认端口是80
    服务器名称或IP :请求的目标服务器名称或IP地址 linux

    路径:服务器URL web

    Use multipart/from-data for HTTP POST :当发送POST请求时,使用Use multipart/from-data方法发送,默认不选中。 正则表达式

    三、查看测试结果
    线程组->添加->监听器->察看结果树sql

  • 四、Jmeter的断言基本使用

    增长断言: 线程组 -> 添加 -> 断言 -> 响应断言
    apply to(应用范围):数据库

    Main sample only: 仅当前父取样器
    进行断言,通常一个请求,若是发一个请求会触发多个,则就有sub
    sample(比较少用)

    要测试的响应字段:apache

    响应文本:即响应的数据,好比json等文本
    响应代码:http的响应状态码,好比200,302,404这些
    响应信息:http响应代码对应的响应信息,例如:OK, Found
    Response Header: 响应头

    模式匹配规则:json

    包括:是响应文本的一个子集,是包含关系,能够用正则表达式
    匹配:使用正则表达式匹配
    equals:彻底与响应文本相同,不能使用正则表达式
    substring:也是包含关系,可是不能使用正则表达式

    二、断言结果监听器: 线程组-> 添加 -> 监听器 -> 断言结果

    里面的内容是sampler采样器的名称
    断言失败,查看结果树任务结果颜色标红
    经过结果数里面双击不经过的记录,能够看到错误信息)

    三、每一个sample下面能够加单独的结果树,而后同时加多个断言,最外层能够加个结果树进行汇总

  • 五、结果聚合报告分析

    新增聚合报告:线程组->添加->监听器->聚合报告(Aggregate Report)

    lable: sampler的名称
    Samples: 一共发出去多少请求,例如10个用户,循环10次,则是 100
    Average: 平均响应时间
    Median: 中位数,也就是 50% 用户的响应时间
    90% Line : 90% 用户的响应不会超过该时间 (90% of the samples took no more than this time. The remaining samples at least as long as this)
    95% Line : 95% 用户的响应不会超过该时间
    99% Line : 99% 用户的响应不会超过该时间
    min : 最小响应时间
    max : 最大响应时间

    Error%:错误的请求的数量/请求的总数
    Throughput: 吞吐量——默认状况下表示每秒完成的请求数(Request per Second) 可类比为qps
    KB/Sec: 每秒接收数据量

  • 六、Jmeter用户自定义变量

    一、线程组->add -> Config Element(配置原件)-> User Definde Variable(用户定义的变量)
    二、引用方式${XXX},在接口中变量中使用
  • 七、CSV数据文件使用

    一、线程组->add -> Config Element(配置原件)-> CSV data set config (CSV数据文件设置)
    二、若是是多个参数须要同时引用,则在CSV数据文件里面设置加多个字段 Variabled names(comma-delitited): csv_name,csv_pwd
  • 八、数据库压测操做

    配置讲解:

    一、Thread Group -> add -> sampler -> jdbc request 添加数据库请求
    二、jar包添加 mysql-connector-java-5.1.30.jar 添加链接数据库的jar包
    三、JDBC connection Configuration 配置

    JDBC request->add -> config element -> JDBC connection configuration

    核心配置

    • Max Number of connections : 最大链接数
    • MAX wait :最大等待时间
      Auto Commit: 是否自动提交事务
    • DataBase URL : 数据库链接地址 jdbc:mysql://127.0.0.1:3306/blog
    • JDBC Driver Class : 数据库驱动,选择对应的mysql
    • username:数据库用户名
    • password:数据库密码

    数据库语句:

    一、Debug Sampler使用(结果树中查看) Thread Group -> add -> sampler -> debug sampler
    二、参数讲解:(sql结尾不要加";")
    一、variable name of pool declared in JDBC connection configuration(和配置文件同名)
    二、Query Type 查询类型
    三、parameter values 参数值
    四、parameter types 参数类型
    五、variable names sql执行结果变量名
    六、result variable names 全部结果当作一个对象存储 七、query timeouts 查询超时时间
    八、 handle results 处理结果集
  • 九、Jmeter非GUI界面参数

    -h 帮助
    -n 非GUI模式
    -t 指定要运行的 JMeter 测试脚本文件
    -l 记录结果的文件 每次运行以前,(要确保以前没有运行过,即xxx.jtl不存在,否则报错)
    -r Jmter.properties文件中指定的全部远程服务器
    -e 在脚本运行结束后生成html报告
    -o 用于存放html报告的目录(目录要为空,否则报错)

    官方配置文件地址 http://jmeter.apache.org/usermanual/get-started.html

  • 十、Jmeter压测接口的性能优化

    一、使用非GUI模式:jmeter -n -t test.jmx -l result.jtl
    二、少使用Listener, 若是使用-l参数,它们均可以被删除或禁用。
    三、在加载测试期间不要使用“查看结果树”或“查看结果”表监听器,只能在脚本阶段使用它们来调试脚本。
    四、包含控制器在这里没有帮助,由于它将文件中的全部测试元素添加到测试计划中。
    五、不要使用功能模式,使用CSV输出而不是XML
    六、只保存你须要的数据,尽量少地使用断言
    七、若是测试须要大量数据,能够提早准备好测试数据放到数据文件中,以CSV Read方式读取。
    八、用内网压测,减小其余带宽影响压测结果
    九、若是压测大流量,尽可能用多几个节点以非GUI模式向服务器施压
  • 十一、Jmeter图形化HTML压测报告dashboard

    一、Test and Report informations

    Source file:jtl文件名
    Start Time :压测开始时间
    End Time :压测结束时间
    Filter for display:过滤器
    Lable:sampler采样器名称

    二、APDEX(Application performance Index)

    apdex:应用程序性能指标,范围在0~1之间,1表示达到全部用户均满意
    T(Toleration threshold):可接受阀值
    F(Frustration threshold):失败阀值

    三、Requests Summary 请求总结

    OK:成功率
    KO:失败率

    四、Statistics 统计数据

    lable:sampler采样器名称
    samples:请求总数,并发数*循环次数
    KO:失败次数
    Error%:失败率
    Average:平均响应时间
    Min:最小响应时间
    Max:最大响应时间
    90th pct: 90%的用户响应时间不会超过这个值(关注这个就能够了) 2ms,3ms,4,5,2,6,8,3,9
    95th pct: 95%的用户响应时间不会超过这个值
    99th pct: 99%的用户响应时间不会超过这个值 (存在极端值)
    throughtput:Request per Second吞吐量 qps
    received:每秒从服务器接收的数据量
    send:每秒发送的数据量
  • 十二、Jmeter图形化HTML压测报告Charts报表讲解

    一、Over Time(随着时间的变化)

    Response Times Over Time:响应时间变化趋势
    Response Time Percentiles Over Time (successful responses):最大,最小,平均,用户响应时间分布
    Active Threads Over Time:并发用户数趋势
    Bytes Throughput Over Time:每秒接收和请求字节数变化,蓝色表示发送,黄色表示接受
    Latencies Over Time:平均响应延时趋势
    Connect Time Over Time :链接耗时趋势

    二、Throughput

    Hits Per Second (excluding embedded resources):每秒点击次数
    Codes Per Second (excluding embedded resources):每秒状态码数量
    Transactions Per Second:即TPS,每秒事务数
    Response Time Vs Request:响应时间和请求数对比
    Latency Vs Request:延迟时间和请求数对比

    三、Response Times

    Response Time Percentiles:响应时间百分比
    Response Time Overview:响应时间概述
    Time Vs Threads:活跃线程数和响应时间
    Response Time Distribution:响应时间分布图
  • 1三、Jmeter压测注意事项

    the firewalls on the systems are turned off or correct ports are opened.
    系统上的防火墙被关闭或正确的端口被打开。

    all the clients are on the same subnet.
    全部的客户端都在同一个子网上。

    the server is in the same subnet, if 192.x.x.x or 10.x.x.x IP addresses are used. If the server doesn't use 192.xx or 10.xx IP address, there shouldn't be any problems.
    若是使用192.x.x.x或10.x.x.x IP地址,则服务器位于同一子网中。 若是服务器不使用192.xx或10.xx IP地址,则不该该有任何问题。

    Make sure JMeter can access the server.
    确保JMeter能够访问服务器。

    Make sure you use the same version of JMeter and Java on all the systems. Mixing versions will not work correctly.
    确保在全部系统上使用相同版本的JMeter和Java。
    混合版本将没法正常工做。

    You have setup SSL for RMI or disabled it.
    您已为RMI设置SSL或将其禁用。

    官网地址 http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html 压测注意事项:必定要用内网IP,不用用公网IP

相关文章
相关标签/搜索