码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 全链路压测效能10倍提升的压测工具实践笔记【开源】【原创】


    背景

    创业型公司或创新型项目往往团队资源有限,人员能力水平有限,难以投入专业自动化压测人员;
    同时部分业务(tob/toc场景)长期有中小型活动场景带来小规模流量并发,需要产研能长期保障并及时感知和解决网站性能和稳定性问题。

    目标

    1. 开发人员5分钟上手压测,30分钟熟练。
    2. 常规性能压测自动化,常态化;零开发,零测试投入;1分钟自动化生成报告,快速定位问题!
    3. 针对场景(运营活动)性能压测自动化,整体压测效能提升10倍。减少1名专业压测人员投入!

    方案

    按照五个维度打造研发管理体系思考和规划,按照自身场景,考虑自研全链路压测工具;
    本身工具开发难度不高,项目速度快,投入周期短;同时也长期解决问题,灵活适配,能有效达成目标;
     
    lmc-autotest BSF全链路压测工具开源地址:https://gitee.com/chejiangyi/lmc-autotest
    lmc-autotest BSF全链路压测sdk开源地址: https://gitee.com/chejiangyi/free-bsf-all/tree/1.6-SNAPSHOT/free-bsf-autotest
    基于BSF基础框架构建全链路压测框架,从框架层面进行流量录制(也可以从浏览器自定义录制),从工具层面进行流量回放,进行性能压测,自动输出压测报告,自动进行全链路功能验收,从而提升测试效能,指导网站性能优化。

    全链路压测架构设计

    1. 业务层引入bsf core和autotest jar包,该基础框架可以对流量进行采样录制。
    2. 采样录制的流量批量同步到mysql存储引擎。
    3. 全链路压测管理端,进行任务编写并启动压测任务。
    4. 压测任务分发到压测到节点集群,并进行样本流量批量回放压测。
    5. 超过时间或者指定条件后,自动生成压测报告。
     
    单个节点建议最大2000-3000并发线程,可以开多个压测节点(可部署10-20个节点,随时扩缩容),支持万级高并发大规模分布式性能压测。

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

    任务分别由样本筛选脚本,错误过滤样本脚本,压测请求前脚本,压测请求后脚本,任务终止脚本组成。
    压测节点收到任务后按照任务执行生命周期,不间断进行压测,直到命中“任务终止脚本规则”后,正常退出。

    全链路压测管理端功能

    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包 (65M左右大小)
    • 节点端task包 (20M左右大小)
    ?
    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滚动升级验证

    功能界面展示

     

     

     

     

     

     

     

    by 车江毅
     
    加微信,可免费试用交流!

     

     

  • 相关阅读:
    【考研复试】计算机专业考研复试英语常见问题三(个人选择/学业规划篇)
    小程序开发平台源码系统+ 带前后端完整搭建教程
    Shopee 一面算法题:颠倒给定的 32 位无符号整数
    风、光、柴油机、蓄电池、电网交互微电网经济调度优化问题研究附Matlab代码
    《The Art of InnoDB》第二部分|第4章:深入结构-磁盘结构-撕裂的页面(doublewrite buffer)
    CSS3 渐变
    S7-1200/1500程序设计规范指南之二:定义
    RabbitMQ笔记(交换机,发布确认,延时队列,死信队列,整合SpringBoot)
    HTTP/2.0协议详解
    【Spark】Spark SQL 字段血缘如何实现
  • 原文地址:https://www.cnblogs.com/chejiangyi/p/16900586.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号