Locust 性能测试分布式调度平台

背景介绍

由于公司内的性能测试一直使用Locust作为工具,线上压测时需要用到多个分布式的压测客户端,这就导致压测期间对各客户端的启停,脚本更新频繁操作,特别是在云上的压测时客户端数量一多,调度效率低下而且很容易弄错,就萌发做一个简易的调度系统,一方面便于管理压测客户端,另一方面对测试人员的使用也图形化减少错误;
项目git地址:https://github.com/biyunfei/locustM

主要功能

  • WEB界面管理
  • Locust的master和slave进程启停
  • 压测脚本分发
  • 压测客户端进程数控制
  • 压测客户端资源监控

安装使用

下载源码后,本地调试使用需要安装locustio==v0.8.1, Django==1.11.10, psutil==5.4.3这三个python依赖包,python环境2.7即可;
主控Master端运行:
在主目录下运行命令:python manage.py runserver 0:8000,浏览器打开http://localhost:8000 即可进入分布式客户端调度页面,locust的加压孵化调度为http://localhost:8089 与locust保持不变;

客户端Slave运行:
在加压客户机上的./hztest/rpc目录下运行:python slave.py MASTER_IP(MASTER_IP为主控Master端IP)

基本操作流程如下:
1.打开调度页面后,刷新客户端列表;
2.选择压测脚本发送给客户端;
3.获取客户端脚本列表,选择要执行的压测脚本文件(可多选);
4.设置客户端locust压测进程数,点击‘ready’启动进程;如果所有压测进程执行同一场景则只需选择一个脚本,如果不同则需选择多个脚本文件对应进程数;
5.点击‘启动Locust Master服务’;
6.浏览器打开http://localhost:8089进行压测执行;
7.压测过程中回到调试页面勾选‘监听客户端资源’并点击‘刷新客户端列表’即可查看压测机的资源使用率,以便控制压测进程和并发数避免客户端瓶颈对压测数据的影响;
8.压测完成后点击‘停止Locust Master服务’;
9.再次执行其它压测,直接从头开始步骤即可;

调度页面示例:

镜像分发

考虑到使用时每台客户端要安装python环境和依赖包,还是很繁琐;而且有时主机安装环境运行时会遇到各种错误,导致花费很多时间要分发上;为了保证分发的环境无关性,就把整个压测系统做成了Docker镜像;需要的童鞋可通过docker环境进行下载运行;
目前制作了两个镜像文件,分别是master和slave端;具体可见https://hub.docker.com/r/biyunfei/locust/

Master镜像下载与运行:
docker pull biyunfei/locust:master
docker run -p 8000:8000 -p 6666:6666 -p 6667:6667 -p 5557:5557 -p 5558:5558 -p 8089:8089 -it –rm biyunfei/locust:master
如果docker是基于VirtualBox虚拟toolbox版本则需要在VirtualBox的虚拟机网卡配置中添加端口转发:8000,6666,6667,5557,5558,8089

Slave镜像下载与运行:
docker pull biyunfei/locust:slave
docker run -e HOST={MASTER_IP} -it –rm biyunfei/locust:slave 其中{MASTER_IP}为master主机IP

发表评论