1、什么是性能测试监控体系?
为什么要有监控体系?
原因:
1、项目-日益复杂(内部除了代码外,还有中间件,数据库)
2、一个系统,背后可能有多个软/硬件组合支撑,影响性能的因素可能是任意一个组件,如果仅仅是通过TPS、RT、吞吐量这些单个目标去分析,会占用大量的时间,所以我们需要用到监控体系
影响性能的因素有很多,我们可以从以下几个层面去分析:
网络问题:带宽是否足够,分析有没有丢包
服务层问题:TPS、RT、错误率、异常、垃圾回收
中间件问题:超时、线程池、缓存命中、消息积压
数据库层面:锁、索引、慢SQL
服务器层面:CPU、内存、磁盘
以上影响因素中服务层问题
是最能反应问题所在,因为:服务层问题:反应的是当前负载下性能表现,这是结果
但是为什么是这个数据?哪些东西影响了他?怎么优化?这才性能测试的价值所在
测试手法:通过基准测试+负载测试,看到对应结果
核心概念:任何一个环节
有性能问题,这个程序一定有性能问题
如果我们需要详细点去分析问题可能还需要将上面例举点影响因素全部分析一遍,这会花费大量的时间且用到大量的插件这时我们需要需要一个工具能把基础监控、指标监控、业务监控、链路监控
都放在一起去供我们查看––––grafana
grafana:负责展示测试数据,能支持长时间的测试
2、监控体系的面板数据是怎么来的?
jmeter配置后端监听器,把jmeter数据提交到InfluxDB时序数据库
进行数据库保存再传给grafana展示
(这四个端都是独立的)
tips:如果当grafana没有显示图表时怎么分析问题?
答:influxDB配置是否有问题——>jmeter是否有误(一级一级向上排查)
3、怎么去搭建监控?
首先准备好grafana和influxDB安装包(安装包,会放入资源库,自取)
打开 Xshell工具 (可在英文官网下载免费版本)
打开xshell工具后,点击「新建文件传输」
会弹出文件传输框
这样我们就可以把本机的安装包文件直接复制到linux系统,
上传过程中也能看到对应的进程
安装完后,我们在Xshell中通过输入ls
命令查看一下目录,找到存放grafana的文件,cd 文件名称进入该文件夹并找到对应文件
然后我们通过命令sodo yum install -y 文件名称
安装grafana
(注意⚠️,yum命令环境需要提前安装,请在资源包中查看对应资源包)
我们可以尝试ping 一下百度,检查一下网络是否正常(如遇问题请查看另外一篇文章**《虚拟机及网络配置》**)
安装完后,输入命令重新加载一下收获程序配置sudo systemctl daemon-reload
然后通过命令sudo systemctl start grafana-server
去启动一下grafana
再通过命令sudo systemctl status grafana-server
检查一下是否启动成功,如果出现failed表示启动失败,出现active表示启动成功
启动完之后我们就可以通过网页端去访问了(网址:虚拟机的ip+端口3000)grafana端口默认为3000,默认账号密码都是admin
进入grafana后,我们目前需要关注两个地方「Dashboards」和「Data souces」
Dashboards:我们可以通过import 来导入jmeter文件
Data souces :引进influxdb 数据库作为数据源来使用(用于传入数据)
设置开机启动命令
sudo systemctl enable grafana-server.service
,虚拟机开机时自动启动grafana
sudo systemctl enable influxdb.service
,虚拟机开机时自动启动InfiuxDB
开机启动之后,我们进入输入influx进入对应的环境,然后创建一个数据库名词为jmeter的数据库create database jmeter
,创建完后退出influxDB,输入命令exit
接着我们打开jmter,并添加一个「后端监控器」
添加完后,这里我们需要注意的是:后端监听器实现一定要选对,不然数据传输不成功
然后我们去修改InfluxdbURL,IP地址,输入我们需要进行测试的虚拟机IP(已经安装了influxdb的虚拟机) +8086端口
配置好后,jmeter的数据会正常传入influxDB数据库中,然后回到grafana,配置对应的influxdb来接收数据
操作步骤:进入「Data sources」––点击「Add data source」––选择并点击「InfluxDB」––在http中输入测试机的IP地址
输入数据库名词,请求选择get请求,最后点击保存
到这里influxDB就配置完了,配置成功的话页面会弹出对应提示
接着我们还需要配置grafana,进入「Dashboard」––点击「import」
然后我们需要上传json文件,(对应json文件会放在本文章对应的资源包中)
上传完json包后––DB name需要选择influxDB––然后输入数据库名词jmeter(这是我们自己创建的名称)––最后点击import
成功之后弹出数据大屏,可以通过刷新页面的方式来刷新数据
最后我们启动一下虚拟机的服务器,然后到jmeter中点击「运行」
监控到的数据会在数据大屏中显示(测试情况可以直接分享网页链接给到领导查看)
4、理解性能测试到底在分析什么?
性能测试在做什么?––通过我们给定的场景,去看服务器的表现形式
工作流程:
接到需求:把项目的性能测试一下––目标:能扛住多少并发?(瓶颈)
我们需要做的事情:确认我们的资源(我不用一个人去解决所有问题!)
tips:如果安排的人不懂性能测试(你就在测试环境测)沟通:这么测试没用,结果不会准
性能测试计划:因为测试环境与生产环境不一致,所以测试结果不一定准确
测试环境的部署与搭建:不用自己去部署项目,可以找开发帮忙搭建
性能测试:初期-我们只需要干两件事––找到对应流程中的接口(如果不确定,可以用录制的方式找
)写到测试计划中(还需要找架构师确认我们初期选择的接口是否有遗漏
)
手法:
1、找瓶颈––基准测试数据+自己的推论,找到单接口吞吐量xxxx,
2、梯度压测––找到结论
3、上下浮动10%找到真正的瓶颈值为多少并写入测试报告中