基于docker搭建jmeter自动化压力测试平台

1.背景

两次并发压测APP,均以失败告终,发现问题在于:

  • 机器硬件资源不足,无法灵活调度
  • 压力测试环境搭建繁琐
  • 流程手工部署,易出错
    鉴于以上问题,团队决定搭建一套压测平台。

2.目标

产品质量组建立20000并发压测环境,为日投放100万的APP产品提供支持,要求:

  • 灵活扩展压测资源
  • 易于部署,易于使用,灵活配置

3.总体设计

3.1系统总体逻辑结构

基于docker搭建jmeter自动化压力测试平台
系统总体逻辑结构说明:
系统采用Jenkins 作为与用户交互的前端工具,使用ansible作为各种文件到各个负载节点的分发工具,底层通信使用ssh,使用jmeter作为执行压测工具。

3.2系统部署结构

基于docker搭建jmeter自动化压力测试平台
系统分为两种节点类型,一种是控制节点,部署的模块为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.测试复杂工程,有需要的库文件和数据文件,使用一个控制节点三个负载节点