项目实操四-性能测试过程实时监控分析

news2024/11/24 22:32:48

在这里插入图片描述


这里写目录标题

  • 一、JMeter性能测试技巧
    • 1、CSV文件驱动
    • 2、定时器
      • a、泊松随机定时器
      • b、固定定时器
      • c、高斯随机定时器
      • d、均衡随机定时器
      • e、同步定时器
      • f、固定吞吐量定时器
      • g、精准吞吐量定时器
    • 3、全局变量 - 跨线程数据传递
    • 4、Debug调试器
    • 5、JMeter执行机端口被占用
  • 二、JMeter性能测试结果查看三大方式
    • 1、GUI界面报告+插件
      • a、聚合报告
      • b、汇总报告
      • c、Basic Graphs图表
    • 2、CLI命令行运行+HTML报表
      • a、命令参数详解
      • b、命令行的测试进度报告
    • 3、后端监听器接仪表盘
  • 三、InfluxDB+Grafana Jmeter测试监控大屏
    • 1、整体架构梳理
    • 2、Linux环境中InfluxDB安装与配置
    • 3、JMeter后端监听器链接InfluxDB
      • a、jmeter配置
      • b、influxdb创建对应的数据库
    • 4、Linux环境中Grafana环境搭建
      • a、进入安装包所在目录执行命令
      • b、解压
      • c、启动
      • d、启动命令
      • e、工作中:后台启动
      • f、web访问
    • 5、Jmeter - InfluxDB -Grafana完整构建调试
      • a、添加数据源
      • b、配置大屏数据展示
    • 6、常见问题
    • 7、优点
  • 四、性能测试领域细分概念:以目的进行划分
    • 1、基准测试:理论推断
    • 2、负载测试:实际性能数据(小规模)
    • 3、压力测试:
    • 4、耐久性测试(疲劳测试)(在压力测试和负载测试之间)
    • 5、尖峰测试
  • 五、业务流程性能测试
    • 以流程:打开首页——》选择自己喜欢的小说为例
    • 携带token的怎么处理?

一、JMeter性能测试技巧

1、CSV文件驱动

jmeter读取csv文件数据,一行一行的循环读取
单线程、多线程都是一致的
当读取最后一条后,会从头开始继续读取

在这里插入图片描述

2、定时器

a、泊松随机定时器

在这里插入图片描述

在这里插入图片描述

b、固定定时器

通过Thread Delay设定每个线程请求之前的等待时间(单位为毫秒)。注意:固定定时器的延时不会计入当前sampler的响应时间里,但是会计入事务控制器的时间。 对于事务控制器来说,定时器相当于loadrunner中的think time(思考时间:实际操作中,模拟真实用户在操作过程中的等待时间)

通常所说的响应时间,大部分情况下是针对某一个具体的sampler (http请求),而不是针对一组sampler组合的事务。
在这里插入图片描述

c、高斯随机定时器

如果需要每个线程的延迟时间是符合标准正态分布的随机时间停顿,那么使用这个定时器,总延迟=高斯分布值(平均Q.O和标准偏差1.0)*指定的偏差值+固定延迟偏移

(Math.abs((this.random.nextGaussian()*偏差值)+固定延迟偏移))
在这里插入图片描述

d、均衡随机定时器

在这里插入图片描述

e、同步定时器

作用:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力
在这里插入图片描述

f、固定吞吐量定时器

在这里插入图片描述

g、精准吞吐量定时器

在这里插入图片描述

3、全局变量 - 跨线程数据传递

在这里插入图片描述

用到了Jmeter元件:
计数器:记录当前执行的是第几次,并通过 number 变量保存
JSON提取器:提取登录接口响应体中的token
BeanShell断言:将token设置为全局变量,可以跨线程组使用
HTTP Cookie管理器:提取上面保存的全局变量

4、Debug调试器

查看Jmeter变量以及属性
在这里插入图片描述

5、JMeter执行机端口被占用

在这里插入图片描述

二、JMeter性能测试结果查看三大方式

1、GUI界面报告+插件

缺点:界面模式运行,会额外占用(脚本执行机器)更多的资源

既要模拟对服务器发起请求,还要汇总页面、图片、图标、统计数据。CPU是有限的
jmeter作为施压机 - 核心工作 - 模拟并发
实时做统计,导致并发效果不能匹配性能场景

a、聚合报告

在这里插入图片描述
90%百分位:表示1000个请求有900个请求的响应时间是小于等于36毫秒
95%百分位:表示1000个请求有950个请求的响应时间是小于等于60毫秒返回
99%百分位:表示1000个请求有990个请求的响应时间小于等于135毫秒返回,有10个请求的响应时间大于135毫秒

90%百分位、95%百分位、99%百分位:各个响应时间段的占比

聚合报告相比较汇总报告,多了三个响应时间分布信息
中位数:表示有1000个请求,其中有500个请求小于等于27毫秒,相当于分界线。

b、汇总报告

具体各个字段的说明在上一篇文章
在这里插入图片描述

c、Basic Graphs图表

在这里插入图片描述

2、CLI命令行运行+HTML报表

这个命令会生成html报表
jmeter -n -t[jmx file] -l [results file] -e -o [Path to web report folder]

a、命令参数详解

-n:在非GUI模式下运行Jmeter

-t:测试文件
要运行的jmeter测试文件(.jmx).
“-t LAST”:将最后加载用过的文件

-l:日志文件,要将样本记录到文件,例如test001.jtl

-e:–报告的ndofloadtests,负载测试后生成报告仪表盘

-o:保存html报告的路径,此文件夹必须为空或者不存在

b、命令行的测试进度报告

在这里插入图片描述
我们通常会在一个linux机器上面去执行

缺点:命令行去运行—推荐的;但是:最终要生成测试结果报告,虽然没有UI界面那么大的消耗,但是依然会有资源压力;
最大的缺点:当测试时间很长时,我们并不能实时的监控

当我们对系统进行12个小时的测试时,但是第1个小时就出现问题,此时并不能看出问题。等12个小时后里面出现几十万次报错,此次测试没用,
测试机器有问题;测试应该停止,而不能继续测试。

3、后端监听器接仪表盘

常用的方案

InfluxDB+Grafana

三、InfluxDB+Grafana Jmeter测试监控大屏

1、整体架构梳理

在这里插入图片描述

2、Linux环境中InfluxDB安装与配置

https://blog.csdn.net/YZL40514131/article/details/134933846

3、JMeter后端监听器链接InfluxDB

a、jmeter配置

在这里插入图片描述

b、influxdb创建对应的数据库

1、第一步:在influxdb服务器上面,输入influx命令进入influx
2、第二步:influx中输入语句:创建jmeter数据库
create database jmeter;
3、第三步:退出influx
quit

在这里插入图片描述
注意事项influxdb与jmeter之间一定要网络互通
如果是虚拟机或者其他linux最好关闭防火墙

4、Linux环境中Grafana环境搭建

a、进入安装包所在目录执行命令

root@hecs-213321:~/performance_testing/monitor# tar -zxvf grafana-9.0.0.linux-amd64.tar.gz 

b、解压

root@hecs-213321:~/performance_testing/monitor# ls
grafana-9.0.0                     influxdb_1.8.0-2_amd64.deb  prometheus-2.36.1.linux-amd64.tar.gz
grafana-9.0.0.linux-amd64.tar.gz  influxdb-1.8.0.x86_64.rpm

c、启动

cd grafana-9.0.0

记得启动相关的命令,在解压后的文件夹里面
例如

root@hecs-213321:~/performance_testing/monitor/grafana-9.0.0# 

d、启动命令

root@hecs-213321:~/performance_testing/monitor/grafana-9.0.0# ./bin/grafana-server web

停止:ctrl+c
关闭ssh窗口,程序就停止了

e、工作中:后台启动

nohup ./bin/grafana-server web > grafana-server.log 2>&1 &

root@hecs-213321:~/performance_testing/monitor/grafana-9.0.0# nohup ./bin/grafana-server web > grafana-server.log 2>&1 &[1] 3481095
root@hecs-213321:~/performance_testing/monitor/grafana-9.0.0# ls
bin  conf  data  grafana-server.log  LICENSE  NOTICE.md  plugins-bundled  public  README.md  scripts  VERSION

f、web访问

http:ip:3000
默认端口3000
默认用户名和密码都是admin

在这里插入图片描述

5、Jmeter - InfluxDB -Grafana完整构建调试

a、添加数据源

选择InfluxDB
在这里插入图片描述
配置InfluxDB地址
在这里插入图片描述
配置InfluxDB对应的表和访问方式
在这里插入图片描述

b、配置大屏数据展示

导入模板
在这里插入图片描述
导入json文件
在这里插入图片描述
配置模板
在这里插入图片描述

6、常见问题

1、网络不通,检查网络IP是否写对,防火墙是否关闭
2、jmeter里面的influxdb地址里面的db=jmeter:和你在influxdb里面创建的数据库一致
3、后端监听器里面measurement:默认携程jmeter和grafana监控大屏模板相对应

在这里插入图片描述

7、优点

横向对比多次性能测试数据
长时间测试,能够实时监控性能测试执行情况

四、性能测试领域细分概念:以目的进行划分

1、基准测试:理论推断

目的:平时负载情况,资源占用情况

2、负载测试:实际性能数据(小规模)

目的:想知道一个系统在多少并发的时候会出现问题,这个问题不只是资源的问题,

基准测试和负载测试共同目的是,探索程序的负载能力

3、压力测试:

取负载测试结果中的最高负载能力-压测
取超出预期负载的测试,看程序的性能反应

4、耐久性测试(疲劳测试)(在压力测试和负载测试之间)

压力测试所持续时间----体现到耐久性
取决于业务场景

生成环境高并发压力,一天中的某几个小时,钉钉打卡(小时为单位,24小时/12小时)
全天都有压力,以天为单位(3天/7天)

5、尖峰测试

模拟突然出现的高并发负载,观察程序在这种情况下出现的反应

在这里插入图片描述
压力测试、耐久性测试、尖峰测试是为了探索程序在高负载情况下的反应

我们作为基准测试,通过基准测试得到负载测试大概率的线程数量通过负载测试,我们可以简单的分析到系统的性能瓶颈达到了,以50ms为响应时间为例,当响应时间小于50ms表示系统性能没有问题。如果超过了50ms代表系统的瓶颈到了,这个时候我就能知道当前线程数为多少。
在这里插入图片描述
接着拿着这个线程数据去做压力测试,观察这10个线程能不能长期稳定的低于50ms。

五、业务流程性能测试

以流程:打开首页——》选择自己喜欢的小说为例

用户真实操作:打开首页(多个接口加载)——》介绍页打开(多个接口加载)
但是:从首页到小说介绍页——》需要用户思考时间
添加定时器
首页与介绍页之间添加1个定时器

在这里插入图片描述

通常用到2个定时器

固定定时器
在这里插入图片描述
统一随机定时器
在这里插入图片描述

携带token的怎么处理?

例如:访问书架接口,有个前提:先登录
前置条件:100个已登录的账户,线程数为1,循环1000次,访问书架
线程组目录如下
操作步骤:
1、新建setUp线程组 - 预先登录100个用户
设置1个线程,循环100次
在这里插入图片描述

在这里插入图片描述
2、添加CSV数据文件设置,提前准备好用户名表
在这里插入图片描述
3、添加登录接口
在这里插入图片描述
4、添加HTTP信息头管理器
在这里插入图片描述

5、添加JSON断言
在这里插入图片描述
6、添加JSON提取器
在这里插入图片描述
JSON提取器提取的数据不能跨线程使用
变量名login_token:不能跨线程组使用

需要用到BeanShell,将login_token保存为全局变量,共享给其他的线程组
这里有100个login_token保存100个全局属性

7、添加BeanShell断言
将Json提取器中的变量设置为全局变量,目的是跨线程组使用
在这里插入图片描述
8、添加调试取样器
JMeter属性设置为True
可以查看jmeter的运行信息,例如设置的全局变量
在这里插入图片描述
在这里插入图片描述

9、添加计数器
记录当前执行的是第几次,并通过 number 变量保存
在这里插入图片描述

10、新增书架接口线程组

在这里插入图片描述
11、线程组下新建HTTP取样器
在这里插入图片描述
12、添加HTTP Cookie管理器
在这里插入图片描述
13、添加HTTP信息头管理器
在这里插入图片描述
14、添加JSON断言
在这里插入图片描述

面试:
当时负责什么模块?怎么设计性能测试用例的?
业务流程怎么测试的?

定时器:用户思考时间

登录接口怎么做的?
模拟多少用户登录?
登录完成后去压测某一个接口
用了哪些组件?
怎么去跨线程组共享变量的?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1319880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux集群实用脚本

现有三台虚拟机,例如:node2、node3、node4 三台虚拟机配置了免密登录,安装了hadoop等软件。 相关集群实用脚本命令 统一执行jps命令 jpsall #!/bin/bash ​ for host in node2 node3 node4 doecho $host ssh $host jps done ​ 统一执行命…

JVM日常故障排查小结

前置知识 jstack简介 jstack是JVM自带的工具,用于追踪Java进程线程id的堆栈信息、锁信息,或者打印core file,远程调试Java堆栈信息等。 而我们常用的指令则是下面这条: # 打印对应java进程的堆栈信息 jstack [ option ] pid option常见选…

AI摄影绘画与PS优化:重塑数字艺术的未来

文章目录 《AI摄影绘画与PS优化从入门到精通》内容简介作者简介楚天 目录前言/序言 在科技日新月异的今天,人工智能(AI)已经渗透到我们生活的各个领域,包括艺术创作。AI摄影绘画和Photoshop(PS)优化是这个领…

[AI工具推荐]AiRestful智能API代码生成

智能API代码示例生成工具AiRestful 一、产品介绍二、如何使用1、第一步(必须):2、第二步(可选):3、第三步(智能生成): 三、如何集成到您的网站(应用)1、开始接入2、接入案例 四、注意点 一、产品介绍 AiRestful是一款基于智能AI的,帮助小白快速生成任意编程语言的API接口调用示…

中国经济增长:全球复苏的引擎

近年来,中国经济以其强劲的增长势头成为全球经济的重要引擎。中国的经济崛起不仅对自身国家发展具有重要意义,而且也对全球经济复苏和稳定有着积极影响。本文将从多个角度探讨中国经济增长对全球经济的影响及其作为全球复苏的引擎。 首先,中国…

基于SpringBoot的房屋租赁系统 附源码

基于SpringBoot的房屋租赁系统 附源码 文章目录 基于SpringBoot的房屋租赁系统 附源码 一.引言二.系统设计三.技术架构四.功能实现五.界面展示六.源码获取 一.引言 本文介绍了一个基于SpringBoot的房屋租赁系统。该系统利用SpringBoot框架的优势,实现了用户注册、登…

【C++】封装:练习案例-点和圆的关系

练习案例:点和圆的关系 设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。 思路: 1)创建点类point.h和point.cpp 2)创建圆类circle.h和circle…

如何搭建企业管理系统Odoo并远程访问管理界面【内网穿透】

文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…

SearchWP WordPress高级网站内容搜索插件(包含所有专业扩展)

点击阅读SearchWP WordPress高级网站内容搜索插件(包含所有专业扩展)原文 SearchWP WordPress高级网站内容搜索插件是一个非常强大的工具,可以显着增强您网站的搜索功能。通过向网站访问者提供高度相关和精确的搜索结果,它可以有效地简化他们的搜索过程…

回归预测 | MATLAB实现IBL-LSSVM【23年新算法】逻辑优化算法优化最小二乘支持向量机的数据回归预测 (多指标,多图)

回归预测 | MATLAB实现IBL-LSSVM【23年新算法】逻辑优化算法优化最小二乘支持向量机的数据回归预测 (多指标,多图) 目录 回归预测 | MATLAB实现IBL-LSSVM【23年新算法】逻辑优化算法优化最小二乘支持向量机的数据回归预测 (多指标…

苹果个人开发者如何实现应用下载安装

作为苹果个人开发者,你可以为iOS设备用户提供应用程序,而用户将能够通过下载和安装这些应用来丰富他们的设备体验。本文将详细介绍个人开发者实现应用下载安装的步骤,包括开发和上架应用程序到App Store。 图片来源:苹果个人开发者…

【轮式移动机器人课程笔记3】移动机器人运动学简介

文章目录 写在前面L3 移动机器人运动学简介3.1 运动学概述3.2 研究机器人运动学的意义3.3 机器人运动的描述3.4 机器人正微分运动学3.5 机器人逆微分运动学3.6 总结 写在前面 前两节课介绍了移动机器人、机械手、类型,本节课重点讲解移动机器人运动学相关知识&…

一个IP证书里可以包含多个ip地址吗

IP地址数字证书是一种由权威机构颁发的数字证书,是只拥有公网IP地址的网站用来保护数据传输安全,防止网站信息被窃取、篡改的安全传输协议。IP证书还可以消除浏览器的“不安全”提示,让网站更容易获得客户信任。同常一个IP证书只能同时保护一…

经典文献阅读之--EA-NDT(利用语义分割提高NDT地图压缩和描述能力的框架)

0. 简介 对于NDT而言,相信各位应该都有所了解了,但是作为高精地图来说性能还需要进一步提升,为此《Towards High-Definition Maps: a Framework Leveraging Semantic Segmentation to Improve NDT Map Compression and Descriptivity》一文提…

AIGC实战——条件生成对抗网络(Conditional Generative Adversarial Net, CGAN)

AIGC实战——条件生成对抗网络 0. 前言1. CGAN架构2. 模型训练3. CGAN 分析小结系列链接 0. 前言 我们已经学习了如何构建生成对抗网络 (Generative Adversarial Net, GAN) 以从给定的训练集中生成逼真图像。但是,我们无法控制想要生成的图像类型,例如控…

基于Java的音乐网站的设计与实现(带论文)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

如何实现公网访问本地内网搭建的WBO白板远程协作办公【内网穿透】

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cp…

数据结构与算法python版本之列表和字典复杂度

前面我们了解了大O表示法以及对不同算法的预估 接下来我们讨论python两种内置数据类型(列表和字典)上各种操作的大O数量级 列表数据类型 list类型各种操作的实现方法很多,如何选择具体哪种实现方法。总的方案就是,让最常用的操作…

微服务实战系列之ZooKeeper(实践篇)

前言 关于ZooKeeper,博主已完整的通过庖丁解牛式的“解法”,完成了概述。我想掌握了这些基础原理和概念后,工作的问题自然迎刃而解,甚至offer也可能手到擒来,真实一举两得,美极了。 为了更有直观的体验&a…

Spark基础入门

spark基础入门 环境搭建 localstandlonespark ha spark code spark corespark sqlspark streaming 环境搭建 准备工作 创建安装目录 mkdir /opt/soft cd /opt/soft下载scala wget https://downloads.lightbend.com/scala/2.13.12/scala-2.13.12.tgz -P /opt/soft解压scala…