全链路压测效能10倍提升的压测工具实践笔记

news2025/7/8 18:22:47

背景

创业型公司或创新型项目往往团队资源有限,人员能力水平有限,难以投入专业自动化压测人员;

同时部分业务(tob/toc场景)长期有中小型活动场景带来小规模流量并发,需要产研能长期保障并及时感知和解决网站性能和稳定性问题。

目标

1. 开发人员5分钟上手压测,30分钟熟练。

2. 常规性能压测自动化,常态化;零开发,零测试投入;1分钟自动化生成报告,快速定位问题!

3. 针对场景(运营活动)性能压测自动化,整体压测效能提升10倍。减少1名专业压测人员投入!

方案

按照五个维度打造研发管理体系思考和规划,按照自身场景,考虑自研全链路压测工具;

本身工具开发难度不高,项目速度快,投入周期短;同时也长期解决问题,灵活适配,能有效达成目标;

lmc-autotest BSF全链路压测工具开源地址:lmc-autotest: 全链路自动化测试工具,可批量导入样本,自动录制样本,自动样本清洗,自动化压测,自动输出压测报告,让开发和压测人员性能测试的效能提升10倍!

基于BSF基础框架构建全链路压测框架,从框架层面进行流量录制(也可以从浏览器自定义录制),从工具层面进行流量回放,进行性能压测,自动输出压测报告,自动进行全链路功能验收,从而提升测试效能,指导网站性能优化。

全链路压测架构设计

1. 业务层引入bsf core和autotest jar包,该基础框架可以对流量进行采样录制。

2. 采样录制的流量批量同步到mysql存储引擎。

3. 全链路压测管理端,进行任务编写并启动压测任务。

4. 压测任务分发到压测到节点集群,并进行样本流量批量回放压测。

5. 超过时间或者指定条件后,自动生成压测报告。

全链路压测任务执行生命周期

任务分别由样本筛选脚本,错误过滤样本脚本,压测请求前脚本,压测请求后脚本,任务终止脚本组成。

压测节点收到任务后按照任务执行生命周期,不间断进行压测,直到命中“任务终止脚本规则”后,正常退出。

全链路压测管理端功能

1. 任务管理:可以对定制的压测任务进行编写,管理。可以实现不同场景和不同姿势的压测进行定制。编写任务帮助文档

2. 定时计划:可以对所有任务进行定时计划编写,管理。实现任务定时自动化调度。编写定时计划帮助文档

3. 节点状态:可以管理所有压测节点的心跳和状态及当前的性能情况。

4. 压测报告:可以管理所有压测任务自动生成的报告。

5. 执行日志:所有压测任务和定时计划执行的执行日志,在压测执行异常的时候,可以查看执行日志获悉。

6. 采样查询:自动化bsf框架录制的流量或者用户自动导入的流量,可以通过此菜单进行查询和模拟调用验证。

7. 公共方法库:通过定义公共的方法库,简化任务和定时计划的编写。公共方法库帮助文档

8. 用户管理:可以管理平台用户和token授权。

9. 帮助文档:到gitee源码管理文档和一些最佳实践文档。

快速编译

注意 bsf-core.jar和bsf-autotest.jar包,可能出现包引用错误,请至gitee release中下载相应jar包。

1

2

cd lmc-autotest

mvn install

快速安装

一般在mysql8.0,jdk8环境下,三步执行即可安装。同样也可以支持云原生方式安装,如阿里云安装最佳实践。

  • sql初始化脚本
  • 管理端provider包
  • 节点端task包

1

2

3

4

5

6

7

8

9

10

11

12

13

#web管理端

nohup java -jar \

-Dspring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/autotest?useSSL=false \

-Dspring.datasource.druid.username={数据库} \

-Dspring.datasource.druid.password={数据库} \

lmc-autotest-provider.jar > provider.log 2>&1 &

#压测节点

nohup java -jar \

-Dspring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/autotest?useSSL=false \

-Dspring.datasource.druid.username={数据库} \

-Dspring.datasource.druid.password={数据库} \

lmc-autotest-task.jar > task.log 2>&1 &

支持多语言使用和第三方介入

  • OPEN API
  • java完整版自动录制样本流量sdk集成
  • C#版本流量录制simple sdk
  • java版本流量录制simple sdk

完善的实践文档

  • 小白快速上手压测
  • 小白快速流量回放压测
  • 自动化QPS核心和主要接口jenkins触发性能压测
  • 自动化QPS核心和主要接口性能url压测
  • 自动化QPS不同级别接口压测
  • 自动化QPS不同开发人员接口压测
  • 自动化QPS全链路接口压测
  • 自动化QPS秒杀/活动接口压测 - 待实践
  • 自动化TPS秒杀/活动场景压测 - 待实践
  • k8s滚动升级验证

功能界面展示

 

 

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

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

相关文章

GitHub Star70K登顶,字节内部数据结构与算法笔记,限时上线

为什么学算法 不得不说,现在几乎所有的大厂,比如Google、字节、BAT,面试的时候都喜欢考算法、让人现场写代码,那你有没有真正地想过,为什么这些大公司都喜欢考算法呢? 经常有人说,程序员35岁之…

Java毕业设计MVC:基于SSM实现计算机硬件评测交流平台

作者主页:编程千纸鹤 作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 项目编号&…

(杂)网易云歌单导入到apple music

喜欢apple music的简洁,就想着把网易云的歌单捣鼓进去。 获取歌单歌曲列表:https://yyrcd.com/n2s/ 转移歌单:https://soundiiz.com/zh/,首次使用需要注册,免费版只能一次导入200首。 平台选择apple music 登录授权即可…

Linux下 man命令的使用 及 中文man手册的安装

文章目录1. man命令使用2. 安装中文man手册1. man命令使用 man命令是Linux下最核心的命令之一。而man命令也并不是英文单词“man”的意思,它是单词manual的缩写,即使用手册的意思。man命令会列出一份完整的说明。其内容包括命令语法、各选项的意义及相关…

第三章 线性模型

3.1 基本形式 给定由d个属性描述的示例x(x1; x2; x3; … ; xd)。线性模型试图学得一个通过属性的线性组合来进行预测的函数,即 3.2 线性回归 线性回归试图学得一个线性模型尽可能准确地预测实值输出标记。 对于如何确定w和b,均方误差是回归任务中最常…

这样做时间轴,让你的PPT更出彩!

文章目录**▌方法一:美化时间节点****▌方法二:利用图片中的“轴”****▌方法三:时间轴不一定需要“轴”****▌方法四:把时间轴拆成数页****▌总结**已剪辑自: https://zhuanlan.zhihu.com/p/56672211 嗨,大家好&#…

【Linux】一万七千字详解 —— 基本指令(二)

文章目录前言man 指令cp 指令mv 指令echo 指令(含输出重定向)cat 指令(含输入重定向)wc 指令more 指令less 指令head 和 tail 指令(含管道用法)date 指令cal 指令sort 指令find 和 which 和 whereis 指令alias 指令grep 指令top 指令zip 和 unzip 指令结语前言 今天的主要内容…

C语言源代码系列-管理系统之学生选修课程系统

往期文章分享点击跳转>《导航贴》- Unity手册,系统实战学习点击跳转>《导航贴》- Android手册,重温移动开发 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过…

想归隐啦——与自然生活为伴

目录 一、陶渊明-桃花源记 二、梭罗-瓦尔登湖 结庐在人境,而无车马喧。问君何能尔?心远地自偏。采菊东篱下,悠然见南山 一、陶渊明-桃花源记 晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹…

第五届“传智杯”全国大学生计算机大赛(练习赛)传智杯 #5 练习赛] 平等的交易

[传智杯 #5 练习赛] 平等的交易 题目描述 你有 nnn 件道具可以买,其中第 iii 件的价格为 aia_iai​。 你有 www 元钱。你仅能用钱购买其中的一件商道具。当然,你可以拿你手中的道具换取其他的道具,只是这些商道具的价值之和,不…

Vuecli项目结构,及组件的使用

根目录文件介绍 node_modules :管理项目中使用的依赖 public:存放一些静态资源,webpack打包时会放入dist文件夹内。 src:书写vue源代码【重点】 .gitignore :存放需要被git忽略文件(不需要保存)…

[附源码]java毕业设计青少年计算机知识学习系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ArcGIS制作横向图例

ArcGIS制作横向图例 右键栅格图层,Symbology——Stretched 切换布局视图——View——Layout View,添加经纬网并调整 Insert——Legend,一路默认点下去 双击图例,Items——Style,进一步调整 选择图中标注的这个样式&am…

ES6 Symbol 内置值及使用场景

Symbol 基本使用 ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,是一种类似于字符串的数据类型。 Symbol 特点 1) Symbol 的值是唯一的,用来解决命名冲突的问题 2) Symbol 值不能与其…

Spring之Bean的实例化

文章目录前言一、通过构造方法实例化二、通过简单工厂模式实例化三、通过factory-bean实例化四、通过FactoryBean接口实例化前言 Spring为Bean提供了多种实例化方法,通常包括四种方式。目的是:更加灵活 第一种:通过构造方法实例化第二种&am…

计算机网络——第五章网络层笔记(4)

距离矢量路由选择协议(DV算法) 每个路由器维护一张表,表中列出了当前已知的到每个目标的最佳距离,以及为了到达那个目标,应该从哪个接口转发。 DV算法是动态的和分布式的,它常被用于小型网络,…

开发时长一年半golang工程师应该具备什么样的技术能力?

一、为什么会有人选择golang? 其实无非是被动和主动。 **被动:**面试新公司后,被领导调岗现学golang,因为公司需要。 **主动:**觉得这个方向有前景,大厂有需求,学了可以升职加薪! 所以不管…

visual studio连接远程开发

一、问题提出 vscode在连接远程调试时不知道如何调试cmake,研究了半天没研究出来,因此决定使用visual studio进行调试。 二、安装 Linux端 cmake版本最低为3.11,可以从此网站下载:https://cmake.org/files/v3.11/ 之前安装的visu…

怎么样恢复移动硬盘格式化的数据呢?

怎么样恢复移动硬盘格式化的数据呢? 这是一个让人很困扰的问题,其实格式化后的数据可以使用牛学长数据恢复工具一键恢复数据,它可以快速识别指定存储介质中所有丢失的文件,操作简单且恢复成功率高。 其工作原理只会提取原有数据&…

安装mayavi

mayavi是一款可视化工具,知乎说直接pip install mayavi不好使,所以我就直接没试,我直接试的好使的。 下面的链接是一个各种依赖包的地址,点开进去之后找mayavi https://link.zhihu.com/?targethttps%3A//www.lfd.uci.edu/~gohlke…