Jmeter性能测试

首先为什么做性能测试,大部分人都有所了解,举个例子,比如说12306,每到节假日,真的是一票难求,有的时候,甚至网页进不去,更严重可能服务发生崩溃,用户体验极差
性能测试基本概念
模拟多个用户的操作对服务硬件性能的影响
TPS(Transaction per Second):每秒事务处理能力
RT(Response Time):响应时间
常见的性能测试工具

  1. Apache ab:Apache HTTP服务性能基准工具
  2. Apache Jmeter:支持很多协议,开源免费,使用Java语言开发
  3. LoadRunner:支持很多协议。收费软件,使用C语言开发
  4. Locust:有web页面,支持很多协议,开源免费,使用python语言开发
  5. nGrinder:基于Grinder开发的性能测试平台,一个能够运行jython、groovy编写测试脚本的应用程序,免费软件,使用Java语言开发
    Jmeter优点
  6. 入门简单,有图形调试界面
  7. 使用java语言开发,支持多操作系统平台
  8. 插件机制,可以进行二次开发定制协议
    Jmeter安装
    先安装java环境,安装JDK即可
    下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html在这里插入图片描述
    配置环境变量后,运行cmd,输入java -version,出现如下内容表示安装成功
    在这里插入图片描述
    下载jmeter,地址:http://jmeter.apache.org/download_jmeter.cgi在这里插入图片描述
    下载下来的文件直接解压即可
    在这里插入图片描述
    我们是windows系统,直接执行bin文件中的jmeter.bat文件即可打开jmeter
    在这里插入图片描述
    在这里插入图片描述
    当然,我们也可以在非 GUI 模式下运行 JMeter,如图
    在这里插入图片描述
    压测脚本的录制与编写
    以录制火狐浏览器为例
    Test Plan右键》Add》Thread(Users)》Thread Group天机一个线程组
    在这里插入图片描述
    线程组里面添加Recording Controller,Thread Group》Logic Contoller》Recording Controller
    在这里插入图片描述
    在测试计划里面添加http代理服务器Test Plan》Add》Non-Test Elements》HTTP(s) Test Script Recorder
    在这里插入图片描述
    设置端口8888,以及目标控制器Target Controller
    在这里插入图片描述
    接下来打开火狐浏览器
    在选项里面打开证书
    在这里插入图片描述
    点击查看证书
    在这里插入图片描述
    点击导入,将Jmeter中bin目录中的文件导入此处,我这里已经导入成功
    在这里插入图片描述
    点击确定,接下来设置浏览器代理和端口,ip是本地ip,端口是8889与Jmeter中的Global Setting一致
    在这里插入图片描述
    点击start以及OK
    在这里插入图片描述
    5.4.1里面出现了一个这样的弹窗,这个是事件的管理器,可以先不用理会
    在这里插入图片描述
    打开浏览器百度页面
    在这里插入图片描述
    此时可以看到我们的Recording Controller里面有录制的脚本
    在这里插入图片描述
    录制APP我进行尝试发现始终无法录取脚本,我在APP里面安装了证书,并且证书已经信任了设置,仍然不能够录取脚本,查询资料说是IOS 10 以后需要再手动信任下证书,在 设置》通用》关于本机》最底下证书信任中。Android 7 以后要 APP 改源码,后面可以通过手动填写接口也是OK的

虚拟用户并发模拟

添加一个线程组
在这里插入图片描述
Number of Threads(users):线程数,用户数
Ramp-up period(second):几秒完成线程数用户数
Loop Count:循环的次数,默认1次
Duration(second):持续时长
Startup delay(second):多长时间再开始
infinite表示的是不断循环
我们本地使用python脚本起一个服务
在这里插入图片描述
然后我们在jmeter里面添加一个HTTP请求和查看结果树
在这里插入图片描述
填写HTTP请求
在这里插入图片描述
我们点击这个地方的三角号进行运行
在这里插入图片描述
然后在查看结果树里面发现运行成功了
在这里插入图片描述
并且这里也有一条对应的日志输出出来
在这里插入图片描述
我们把用户数改成10个点击运行,发现会一直请求10个
在这里插入图片描述
在这里插入图片描述
现在的数量是10个,当我们这个数无穷大的时候,我们发现,它在1秒之内是不能够完成较大数量的请求的,而我们的TPS指的是每秒处理请求的数量,这显然是不太符合要求的,因此我们需求修改Ramp-up period(second),假设我们填写5,而用户数填写50,则每一秒会同时处理10个请求,当用户数无穷大的时候,界面相应非常慢,设置有可能直接终止运行,因为单机的性能是十分有限的,所以需要使用分布式的方法进行性能测试,有一台服务器做jmeter的控制端,然后再配置几台负载服务器,同时发起并发,并均匀的给这几台负载服务器发送请求
在我们运行jmeter的过程中,我们可以查看jmeter的占用内存或者CPU之类的信息,方法如下
dos窗口运行jconsole命令,会出现如下弹窗,并选中ApacheJMter.jar这个包,点击链接
在这里插入图片描述
点击不安全的链接
在这里插入图片描述
之后会显示出来当前jmeter占用的一些内存信息,包括CPU利用率等等信息
在这里插入图片描述
点击VM 概要,可以看到服务的详细信息
在这里插入图片描述

压测结果分析

Listener View Results Tree:查看结果树
主要的功能有:

  1. 正则表达式测试
  2. CSS选择器测试
  3. Xpath测试
  4. JSON Tester
    我们先正常跑一个http请求
    在这里插入图片描述
    我们使用正则的方式去匹配我们想要的结果
    在这里插入图片描述
    使用JSON Path Tester匹配出我们想要的数值,点表示当前的路径
    在这里插入图片描述
    Aggregate Report:聚合报告
    参数:
    平均值:平均响应时间,所有请求的平均响应时间
    中位数:50%的用户响应时间不得超过这个值
    99%Line:99%的用户响应时间不得超过这个值
    Error%:异常百分比(错误请求的数量/请求的总数)
    Throughput:吞吐量,默认情况下没秒完成的请求数
    Received KB/sec:接收数据
    Lable下面显示的名称就是线程组下面对应的HTTP请求的名字
    Sample:用户数
    在这里插入图片描述
    我们尝试下使用非图形化的界面去运行,使用命令
    jmeter -n -t test_http.jmx -l test_http.jtl,-n表示非图形界面运行,-t指定对应的jmx文件,-l指定生成的结果文件
    在这里插入图片描述
    我们让它无限循环跑看下
    在这里插入图片描述
    在这里插入图片描述
    我们可以看到它会不断的循环下去,并且会不断的请求我们所起的服务

分布式压测

1、分布式简介
单台服务器的性能在CPU、内存、IO上存在瓶颈,并且对目标服务器产生的压力比较小;因此需要多台机器对目标服务器产生压力,就可以模拟成千上万个用户并发访问
2、工作节点部署
我们需要开放一个端口用于负载机(Slaves)和jmeter进行通信,默认端口是tcp协议的且端口为1099,然后我们需要操作两个文件一个是jmeter.properties,我们需要关闭SSL认整:server.rmi.ssl.disable=true
另一个文件是system.properties,用来指定对应的host
java.rmi.server.hostname=192.168.31.61(假设我们有两个电脑,可以部署两个节点,那么在这两台电脑上我们要分别修改jmeter.properties以及在指定对应host的时候我们填写对应自己本机器的IP即可)
运行:Jmeter-server(windows电脑运行Jmeter-server.bat)
3、控制节点部署
控制端(Master):端口udp 4445
jmeter.properties
添加负载机IP:remote_hosts=192.18.31.61,192.168.31.62(这里的IP就是我们在工作节点部署的时候所填写的IP)
关闭SSL:server.rmi.ssl.disable=true
此时我们运行jmeter.sh/jmeter.bat,此时run》Remote Start里面就有我们之前填写的IP,有几个节点就会显示几个ip,整个过程就是分布式压测的过程和思想,因为我这里只有一个电脑,所以暂时就不演示了

性能监控系统

顾名思义就是把我们压测的结果以更加智能化的方式显示出来,例如,图形化的界面方式等等,实现的方式可以有部署InfluxDB,部署Grafana以及配置Jmeter;使用Backend Listener:把数据的结果转存到别的服务里面,比如说写到数据库里面
InfluxDB:https://portal.influxdata.com/downloads/
Grafana:https://grafana.com/grafana/download?platform=windows
先写这些吧,写不动了,后面的内容空了再更新哈,谢谢大家~

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木土雨成小小测试员

你的鼓励将是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值