一,Jmeter简介

  1. Apache组织开发的开源免费压测工具
  2. 纯java程序,跨平台性强
  3. 源程序开源从网上下载
  4. 高可拓展性
  5. 可对服务器,网络或者对象模拟巨大的负载,进行压力测试
  6. 也可以用于接口测试
  7. 支持分布式,多节点部署

二,主要功能模块

  1. 取样器:进行脚本逻辑控制
  2. 线程组:压测场景控制
  3. 监视器:监控压测运行,获取性能指标

三,录制压测脚本

  1. 压测对象:http://news.baidu.com
  2. 压测页面:首页,国际频道,财经频道
  3. 步骤:
    1) 访问首页
    2) 单击“国际”(频道)
    3) 单击“财经”频道
    4) 操作手段:录制回放,上手容易,入门学习的好手段
    5) 录制脚本的配置:
  • 打开jmeter
  • 新建压测脚本
  • 添加“HTTP(S) Test Script Recorder”

jemeter压测 cpu过高_jemeter压测 cpu过高

  • 添加线程组
  • 在线程组里添加recording controller
  • 打开https test script recorder
  • 设定port=8088
  • 设定target controller=test plan > tread group > recording controller
  • 录制脚本的配置
    1) 在requests filtering 添加“include” 与“exclude” url 正则匹配表达式
    2) 目的:避免录制过多没必要的请求
    3) include: .*\.(baidu\.com).*
    4) exclude: .*\.(js|css|PNG|jpg|ico|png|gif).*

    关于链接过滤的几点说明:
  • exclude去掉一些诸如图片,js,css等静态请求,这些静态资源一般会单独存放,不会占用服务器运算资源,所以压测的时候可以不测试这些资源
  • include包含内容,只抓取baidu url的内容,不抓取其他网站的内容
  • 正则表达式匹配原理快速入门说明如下:
  • 单击保存按钮,命名文件名,将对jmeter脚本的更改存储到磁盘
  • 打开浏览器,将浏览器的代理服务器地址指向http://localhost:8088
  • 开始录制:
  • 单击hhtps test script recorder中的start按钮,打开代理
  • 单击弹框中的确定按钮
  • jmeter的录制代理将会开启
  • 开始录制:
  • 在对应的浏览器中访问百度
  • 切换到国际频道
  • 切换到财经频道
  • 停止jmeter的代理服务
  • 可以看到对于的请求已经被录制到jmeter中了
  • 名词解释:
  • 线程数:模拟用户数
  • Ramp-up时间:启动全部线程所需的时间。比如我需要启动10个线程,并且10s启动一个线程,所以我的ramp up的值就是10*10=100s。
  • 验证回收
  1. 验证代码的正确性是测试的老本行
  2. 压测代码其实也是代码
  3. 所以,自己的代码也必须检查一下
    方法:添加查看结果树回放验证
  • 检验回放数据
    在查看结果树中,检查请求/响应是否都成功了

    四, 添加响应断言
  1. 检验请求/响应的正确性
  2. 其实就是个校验点
  3. 压测结果的有效性 - 请求收到正确响应的前提下
  4. 断言的实际值与设定值相符–>成功
  5. 断言的实际值与设定值不相符 -->失败
  • 运行验证
    运行单并发压测,验证断言添加是否正确。在查看结果树中查看结果

五, 添加聚合压测报告

  1. 聚合报告:比较常用的一套展示压测结果的报告
  2. 展示请求与响应性能参数
  3. 累计值压测数据值的展示。报告只展示当前的实例交互产生的结果,如果需要对服务器性能做整体了解,需要进行多次试验,取平均值等方式进行。
  4. 建议连续压测,如果中间有间断需要数据清零,否则是累计的值,对压测结果会有影响。
  • 添加聚合压测报告
    路径:线程组-添加-监听器-聚合报告
  • jemeter压测 cpu过高_压测_02

  • 六,性能指标解读:
    1)平均值:单个请求的平均响应时间
    2)中位数:50%用户的响应时间(把用户的响应时间从小到大排序,然后取中间的用户的响应时间,底下的以此类推)
    3)90%百分位:90%用户的响应时间
    4)95%百分位:95%用户的响应时间
    5)99%百分位:99%用户的响应时间
    6)最小值:最小的请求响应时间
    7)最大值:最大的请求响应时间
    8)异常%:错误率
    9)吞吐量:每秒钟能完成多少个请求
    10)接收 KB/sec:每秒从服务器端接收到的请求数据量
    11)发送 KB/sec:每秒从服务器端发送的请求数据量
    12)样本:压测过程中实际产生多少个样本
    注意:
    平均值的困扰:个别极端结果对实际性能数据的干扰。比如我一个请求的响应时间分别是2毫秒,3毫秒,2秒,这样平均值就不正确。建议这个只当做参考。实际工作中百分位更能客观反映实际性能情形

七,Jmeter静默压测

  1. 静默-> 脱离ui运行jmeter压测
  2. 好处:命令运行更容易“搞事情”,比如后期持续集成
  3. 命令格式:jmeter -n -t $jmx_file -| $jtl_file
  4. jmx:jmeter压测程序脚本文件,压测控制过程记录在jmx文件中
  5. jtl文件是jmeter压测请求响应数据的原始文件
  6. 压测报告的生成
  7. 具体操作:用jmeterui录制脚本,然后用命令行进行访问,执行文件,得到jtl文件,然后在打开jtl文件,查看测试报告
  8. jemeter压测 cpu过高_响应时间_03