服务端性能测试 JMeter

JMeter介绍与安装

性能测试基本概念

为什么要做性能测试?
1、满足用户使用需求:网站访问量大崩溃
2、最小化成本:新服务上线不知道多少台服务器
3、评估应用系统性能,给运维做系统容量规划提供依据、给开发提供应用优化参考。

性能测试的基本概念
1、什么是新能测试?
模拟多个用户测操作对服务器硬件性能的影响
2、TPS(Transaction per Second)每秒事物处理能力
3、RT(Response Time)响应时间

常见性能压力测试工具
Apache ab:APache HTTP服务性能基准工具
APache JMeter:支持很多协议,开源免费,使用java语言开发
LoadRunner:支持很多协议,收费软件,使用C语言开发
Locust:有Web界面,支持很多协议,开源免费,使用Python开发
nGrider:Naver公司基于Grider开发的性能测试平台。Grinder是一个能运行jython(在JVM上运行的Python)、groovy编写测试脚本的应用程序。免费软件,使用Java语言开发。(运行ngrinder-controller.war,默认账户与密码:admin)

JMeter优点
1、入门简单,有图形调试界面
2、使用java语言开发,支持多操作系统平台
3、插件机制,可以二次开发定制协议。可以使用三方开发者开发的协议支持

JMeter安装
安装JDK(1.8版本)
官网地址:https://www.oracle.com/cn/java/technologies/javase-downloads.html
windows系统环境变量配置

	 JAVA_HOME D:\Android\Java\jdk1.8.0_25    (注意这里面的JAVA_HOME大写后面会用到)
	 classpath  .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;  (注意最前面加点和分号)
	 path  %JAVA_HOME%bin;%JAVA_HOME%\jre\bin;

mac配置

	export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
	export PATH=$PATH:$JAVA_HOME/bin:.
	export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.

下载JMeter
JMete官网:http://jmeter.apache.org/download_jmeter.cgi
在这里插入图片描述
在这里插入图片描述
下载完成后直接解压
在这里插入图片描述
点击bin目录下的jmeter可执行文件
在这里插入图片描述

压测脚本的录制和编写

前提

1、JMeter配置
2、浏览器配置
3、录制与回放

操作
1、添加Recording Controller
路径:Test Plan -> Thread Groud ->Add ->Logic Controller ->Recording Controller
在这里插入图片描述
新建HTTP Test Script Recoder
监听对应的请求,记录到Recording Controller中
在这里插入图片描述

2、点击start后,bin目录下会生成对应的证书
在这里插入图片描述
3、点击安全证书,做安全认证。

  • 火狐浏览器认证步骤
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4、配置好代理,访问页面,这是就可以抓取到对应的请求信息
    在这里插入图片描述
    5、过滤请求资源
    在这里插入图片描述
    6、添加View Results Tree。用与查看手动发送的请求返回的结果
    在这里插入图片描述
    请求后返回结果
    在这里插入图片描述

虚拟用户并发模拟

创建一个线程组,发送对应的请求,比如20个5秒,每秒发送4个请求。但是如果要求每秒发送的请求数量超过压载机的性能时。这时也会造成数据压不上去的情况,直接会报机器资源不够。内存溢出等情况。如果勾选上下面的Infinite请求就会一直发送。
在这里插入图片描述
在这里插入图片描述
通过jconsole查看性能情况
更改JMeter配置,提高压载(bin目录下,打开vim jmeter.sh)
在这里插入图片描述
在这里插入图片描述
通过jconsole查看查看性能(JDK自带)
在这里插入图片描述
在这里插入图片描述

其他两个线程组配置
在这里插入图片描述
Specify Thread lifetime设置
在这里插入图片描述

压测结果分析

View Results Tree

功能:
正则表达式测试:RegExp Tester
CSS选择器测试
XPath测试:XPath Tester(Use Tidy)
JSON Tester:
在这里插入图片描述
Aggregate Report 聚合报告
Aggregate Report:聚合报告
参数:
平局值:平局响应时间,所有请求的平均响应时间
中位数:50%的用户响应时间不超过这个值
99%Line:99%的用户响应时间不超过这个值。
Error%:异常百分比。(错误请求的数量/请求的总数)
Throughput:吞吐量,默认情况下每秒完成的请求数。
Received KB/sec:接收数据
在这里插入图片描述
在这里插入图片描述

不使用图形化界面操作
先在JMeter中保存请求文件,(请求线程中Control+S)比如这里保存HTTP Request.jmx

jmeter.sh -n -t HTTP Request.jmx -l test_HTTP.jtl

-n 不启动图形化界面 -t 指定运行的线程组文件 -l 指定我们的输出

JMeter分布式压测

分布式简介
为什么要使用分布式?
单机性能瓶颈:CPU、内存、IO
参考:https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html#terminology

工作节点(Slave)部署
1、负载机(Slaves):端口tcp 1099
jmeter.properties
关闭SSL:server.rmi.ssl.disable=true
system.properties
java.rmi.server.hostname=192.xxx.xx.xx
2、运行:jmeter-server

jmeter.properties 关闭SSL:server.rmi.ssl.disable=true
在这里插入图片描述
system.properties 添加 java.rmi.server.hostname=IP
在这里插入图片描述
控制节点(Master)部署
控制端(Master):端口 udp 4445
jmeter.properties

添加负载机IP:remote_hosts=负载节点IP, 负载节点IP,负载节点IP
关闭SSL:server.rmi.ssl.disable=true

在这里插入图片描述
在这里插入图片描述
查看负载节点机器
run - Remote Start
在这里插入图片描述
启动远程所有负载节点
在这里插入图片描述
使用命令行驱动多个节点运行

jmeter.sh -n -t HTTP Request.jmx -l test_HTTP.jtl -R  负载分支节点IP,负载分支节点IP,负载分支节点IP

注意:
在这里插入图片描述

性能监控系统

InfluxDB简介

使用数据展示平台展示JMeter实时压测数据
GitHub地址:https://github.com/influxdata/influxdb
Docker仓库地址:https://hub.docker.com/_/influxdb
在这里插入图片描述

部署InfluxDB

influxDB是一个用Go语言开发的开源分布式时序数据库
新建容器网络:docker network create grafana 查看是否新建成功:docker network ls
下载influxdb:docker pull influxdb:1.7.10
运行容器:docker run -d --name=influxdb --network grafana -p 8086:8086 -v ${PWD}/influxdb/:/var/lib/influxdb influxdb:1.7.10
创建数据库:
第一种方式:curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE jmeter"
在这里插入图片描述
第二种方式:docker exec -it influxdb influx ,执行语句 create database jmeter; 在这里插入图片描述
简单使用:

show databases;
use jmeter;
show measurements;
select * from jmeter limit 3;
部署Grafana

GitHub地址:https://github.com/grafana/grafana
Docker仓库地址:https://hub.docker.com/r/grafana/grafana
1、Grafana是一个可视化面板(Dashboard)工具,有非常漂亮的图表展示功能、齐全的度量仪表和图形编辑器。
2、安装:docker pull grafana/grafana
3、运行容器:docker run -d --name grafana --network grafana -p 3000:3000 grafana/grafana:6.6.2
4、访问:http://localhost:3000
5、默认登陆账号:admin 密码:admin
在这里插入图片描述
Grafana配置数据源
配置InfluxDB数据源
URL:http://influxdb:8086
Database:jmeter
Min time interval : 5
在这里插入图片描述
查看Influxdb中url
在这里插入图片描述
在这里插入图片描述
新建Dashboards
在这里插入图片描述
配置对应的展示dashboards
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击import,进入大盘
在这里插入图片描述
Jmeter监听配置
在这里插入图片描述
在这里插入图片描述

补充

1、压测计划
2、模拟数据
3、设置全局变量
4、取获得返回值做参数
5、断言
6、等待

压测计划

在这里插入图片描述
在这里插入图片描述

模拟数据

直接在数据库插入,可以使用MySQL WorkBench手工插入

设置全局变量

设置随机变量
线程组 - add - config Element - Random Variable
在这里插入图片描述
设置全局变量
线程组 - add - config Element - CSV Data Set Config
在这里插入图片描述
本地预设变量
在这里插入图片描述
安装Random CSV Data Set Config插件
在这里插入图片描述
安装方式:
在这里插入图片描述
在这里插入图片描述
4、取获得返回值做参数
获取对应下域名(Domain)的Cookie .配置:线程组 - add - config Element - HTTP Cookie Manager
在这里插入图片描述
5、断言
在这里插入图片描述
6、时间限制
在这里插入图片描述
7、用例运行限制
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值