1. 理解什么是性能测试的监控
为什么要有监控体系?
项目--日益复杂(内部除了代码外,还有中间件,数据库)
核心概念:任何一个环节有性能问题,这个程序一定有性能问题.
一个系统,背后可能有多个软(硬)件组合支撑. 影响性能的因素可能是任意一个组件。
如果仅仅是通过TPS,RT,吞吐量这些单个目标去分析,占用大量的时间.
网络问题:带宽是否足够,分析有没有丢包
服务层问题:TPS,RT,错误率,异常,垃圾回收
中间件:超时,线程池,缓存命中,消息积压
数据库: 锁,索引,慢SQL
服务器层面: CPU 内存,磁盘
服务层问题:这是结果,反映的是当前负载下性能表现,这是结果,但是为什么是这个数据?
哪些东西影响了他?怎么优化?
总结:测试手法巨简单,一个基准测试 + 负载测试,我们就有一个结果
期望有个东西: 把基础监控,指标监控,业务监控,链路监控都放到一起去.
grafana (它负责展示测试数据,能支持长时间的测试.)
2. 理解监控体系的面板数据是怎么来的
当我们理解了这个概念后:
为什么grafana没展示图表?
influxDB配置问题. -- jmeter 设置是否有误
搭建一个比较简单的监控
3. 理解怎么去搭建监控
grafana搭建
拿到三个文件 如下 (没有的去课堂派下载):
上传到你的服务器中(这里建议最好用xshell之类的工具,如果对命令不熟悉的同学不用硬来), 开始按顺序进行操作:
安装grafana:
sudo yum install -y 你的grafana包名(例如:我这里的名字是 grafana-enterprise-10.4.1-1.x86_64.rpm)
如果出现错误:
检查 网络是否能连通外网!
如果没有yum 命令,请按网络配置文档(文档在课堂派)中的第三项 去设置yum
出现以下文字,表示安装已完毕:
这时候执行命令如下:
重新加载系统的守护程序配置:
sudo systemctl daemon-reload
启动grafana服务:
sudo systemctl start grafana-server (这个命令可能会卡一会儿,耐心等待。。。)
检查启动状态
sudo systemctl status grafana-server
出现上图,就表示启动成功了。
设置开机启动:
sudo systemctl enable grafana-server.service
尝试访问: ip + 3000端口 出现以下图形就表示成功了
安装influxDB
同理,上传到服务器
执行安装命令:
sudo yum install -y influxdb-1.8.4.x86_64.rpm
可以用这种方式安装.
启动:
systemctl start influxdb
查看influxDB状态:
systemctl status influxdb
设置开机启动:
sudo systemctl enable influxdb.service
验证服务启动情况:
influx
退出命令: exit
这里需要注意: 进入到influxdb中 去执行命令(需要创建数据库)
create database jmeter
部署 prometheus
同样,上传到linux上
执行命令:
tar xvfz prometheus-2.51.1.linux-amd64.tar.gz
名字太长,修改个简单的 :
mv prometheus-2.51.1.linux-amd64 prometheus-2.51.1
配置环境变量:
vi /etc/profile
在文件最后添加:
export PROMETHEUS_HOME=/你安装的路径/prometheus-2.51.1
export PATH=$PATH:$PROMETHEUS_HOME
让环境变量生效:
source /etc/profile
启动: 注意 prometheus 启动,需要带配置文件prometheus.yml
如在prometheus 目录下 :
直接用命令:
prometheus
否则用命令:
prometheus --config.file=/你安装的路径/prometheus2.51.1/prometheus.yml
先来学习下,怎么完成第一步:让grafana 与 influxdb结合运行
然后选择dashboards
就能看到一个常规的面板所在
接下来我们来看看jmeter:
4. 理解性能测试到底在分析什么
性能测试在做什么? --
通过我们给定的场景,去看服务器的表现形式.
我们不能去解决问题!(我们是照X光的人)
工作流程:
提需求: 去把这个项目的性能测试一下. 目标:能抗住多少并发?(找瓶颈)
我们要做的事情:确认我们的资源 -- 我不用一个人去解决所有问题!
必须要的东西: 与生产环境配置类似的 性能测试服务器。
如果这个安排的人 不懂性能测试 -- 你就在测试环境测 沟通:这么测没用,结果不会准确.
性能测试计划:一定要描述,因为测试环境与生产环境不一致,所以结果不一定准确。
测试环境的部署与搭建 -- 不用你自己去部署项目,可以找开发帮忙搭建.
性能测试:其实很简单,初期,我们只需要干两件事 --
找到对应流程中的接口
(如果不确定,用录制的方式找.) 写到测试计划中去! --
找架构师看,计划发给他。我现在初期选定的接口是这些,你看看有没有遗漏的?
手法:
找瓶颈 -- 基准测试数据 + 自己的推论,单接口吞吐量:xxx?
梯度压测 -- 找到结论
上下浮动 10% 去找到瓶颈所在。
把结果写在测试报告中.
评论区