基于docker搭建jmeter自动化压力测试平台
1.背景
两次并发压测APP,均以失败告终,发现问题在于:
- 机器硬件资源不足,无法灵活调度
- 压力测试环境搭建繁琐
- 流程手工部署,易出错
鉴于以上问题,团队决定搭建一套压测平台。
2.目标
产品质量组建立20000并发压测环境,为日投放100万的APP产品提供支持,要求:
- 灵活扩展压测资源
- 易于部署,易于使用,灵活配置
3.总体设计
3.1系统总体逻辑结构
系统总体逻辑结构说明:
系统采用Jenkins 作为与用户交互的前端工具,使用ansible作为各种文件到各个负载节点的分发工具,底层通信使用ssh,使用jmeter作为执行压测工具。
3.2系统部署结构
系统分为两种节点类型,一种是控制节点,部署的模块为Jenkins/ansible/jmeter/ssh,负责任务任务的触发,测试脚本GIT拉取,文件与配置同步到各个负载节点。另一种是负载节点,部署模块为jmeter/ssh,负责执行服务端分发的具体测试任务。
4.开发规划
4.1开发人员
省略。。。。
4.2开发计划
自动化压力测试平台计划基于K8s+docker 平台,所有节点均以容器方式运行,利用docker 原生的易伸缩扩容易迁移等特性,预计于8月底完成平台搭建。
4.3开发环境与工具
- 开发环境:docker 19.03.12 / k8s (Major:“1”, Minor:“18”)
- 开发语言:python 2.7 / linux shell
- 涉及的工具:ansible / ssh / jenkins /jmeter
4.4开发规范
- 1.不做本地化配置,所需的基本配置在DockerFile文件中植入,其他配置在jenkins 界面留出配置参数,所需脚本提交到git仓库,每次从仓库获取,便于维护,不依赖于具体jenkins环境。
- 2.Docker 镜像制作尽可能减少层数,减少体积大小。
5.测试实施
5.1线下测试
- 1.测试简单工程,没有需要的库文件和数据文件,使用一个控制节点三个负载节点【测试通过】
- 2.测试复杂工程,有需要的库文件和数据文件,使用一个控制节点三个负载节点【测试通过】
5.2线上测试
- 1.测试简单工程,没有需要的库文件和数据文件,使用一个控制节点三个负载节点
- 2.测试复杂工程,有需要的库文件和数据文件,使用一个控制节点三个负载节点