分布式性能压测系统

2020 年 3 月 25 日

分布式性能压测系统

平台简介和痛点


分布式压力测试平台针对实际使用过程中:多个压力机脚本分发、多组并行使用同一组压力机资源时依赖 jar 包冲突以及资源利用率不高等问题,进行了流程的管理和优化,让系统自动化代替人工,提高了测试人员的工作效率,降低压测成本。以前手工压测耗时,费力,成本高,主要有以下弊端:


  • 压力机资源利用率低;

  • 多台压力机手动部署压测环境、效率低,容易出错。

  • 准备测试时上传脚本,测试计划等数据文件,操作繁琐,浪费时间。

  • 压测时,需手动启动和关闭jmeter服务,效率低。

  • 压测结束后,手动初始化压力机环境,浪费时间,效率低。



平台系统解决方案


基于上述痛点问题,我们进行了总结和分析,然后提出了分布式性能压测平台的解决方案:



通过这个系统的流程图可以看出,这个系统分为三大模块:


  • 压力机模块:整合压力机,形成资源池,如果我想占用100台压力机,那可以直接在这个模块中选择100台机器,点击占用,这样这100台机器就会被标记,别人就不能用了,使用完了就释放,其他人看见了就是可以随时使用,这样就使得压力机资源得到了充分利用。同时可以批量操作压力机,提高效率

  • 任务管理:这个模块主要就是将脚本的分发批量化,将脚本一次性上传到100台压力机上只需要几分钟的时间就可以完成

  • 主控机控制:这部分主要负责压力测试的控制,比如批量上传测试计划,压测结果实时反馈,配置跳转测试参数,让测试人员可以掌控压测的整个过程,提高了测试的自动化水平。


这不仅解决传统压测中出现的痛点问题,同时也使压测变得流程化,降低了压测的难度,实现人人会压测。


系统架构


基于上述需求,设计了如下系统架构:


  • 应用层 面向用户,提供给用户一些功能性的按钮;

  • 业务逻辑层和数据访问层 保证压测流程正确,绑定每个测试任务的数据为压测提供数据支撑(比如需要100台机器压测,就在系统压力机管理中占用100台,这样这100台就标记成 “在使用”,别人无法占用)。

  • 代理层 是一个agent,部署在每台压力机上,用来与应用层进行交互,传输命令等。这样就可以实现远程控制压力机进行脚本的传输以及压力测试



实际应用效果


本次双 11,本人负责压测某业务 19 个接口,从写接口,调试,到最后完成一轮压测只用了 3 天的时间就完成了,其中有一个 4kw 和一个 2kw 压力需求的接口!工作效率提高了近 80% 。


目前这个系统线上运行良好,已整合了分散在各业务线的几百台压力机,形成资源池按需分配,充分利用压力机的使用效率,以满足 618 及双十一备战集中压测的任务。并且有近百人多条业务线的同事使用此系统进行 618 和双 11 的压测任务。


说得多不如做得好,感兴趣的同学赶紧试用一下吧,点击“原文” (只限京东内网打开),外部测试伙伴如有需要,欢迎留言区洽谈…





2020 年 3 月 25 日 19:48200

评论

发布
暂无评论
发现更多内容

elasticsearch 游标 使用

wkq2786130

elasticsearch

JavaScript 中的 Object.defineProperty

Verlime

Java 前端

第七周总结

天之彼方

Git 常用命令总结

Verlime

git

随着并发的增加,响应时间和吞吐的变化

朱月俊

MySQL 锁表后快速解决方法 及 锁表原因

wkq2786130

MySQL

如何找一碗正宗的热干面

zhoo299

美食

antd vue 使用upload组件action上传文件

Seven_xw1213

前端 antd vue upload

性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?

一叶知秋

解决 EXT4 使用无法挂载

耳东

ext4 journal

过早三件套之面窝

zhoo299

美食

Github 创建发行版本

耳东

GitHub github release

Scrapy爬虫入门

烫烫烫个喵啊

python 爬虫

话说性能那些事

朱月俊

ES6 Promise 对象介绍

Verlime

Java 前端 ES6

八个排序的原理、Java 实现以及算法分析

多选参数

数据结构 算法 排序 排序算法 数据结构与算法

重置 Grafana admin 密码

耳东

Grafana Grafana password

neo4j load csv 使用

wkq2786130

neo4j 批量 导入 数据 的 几种方式

wkq2786130

neo4j

第7周总结+作业

林毋梦

Neo4j APOC 使用

wkq2786130

neo4j apoc

自己动手实现一个 Promise

Verlime

Java 前端

米酒米酒黼子酒

zhoo299

美食

第 7 周 - 作业 2

seng man

K8S 中的 Grafana 数据持久化

耳东

Kubernetes k8s Grafana 配置文件持久化

问题驱动

林昱榕

学习 问题驱动

架构师训练营第七周学习总结

fenix

极客大学架构师训练营

架构师0期07周作业

喵呜的小哥哥

第七周命题作业

天之彼方

架构师训练营第7周

大丁💸💵💴💶🚀🐟

架构师训练营第7周

大丁💸💵💴💶🚀🐟

分布式性能压测系统-InfoQ