性能测试平台(locust+boomer)之一
最近公司打算对后端服务进行压力测试,考虑后端的主要使用golang实现,因此作者准备使用 locust + boomer 实现一个性能测试平台,mark一下实现过程。
what is locust
Locust 是一种易于使用、可编写脚本且可扩展的性能测试工具。 您可以在常规 Python 代码中定义用户的行为,而不是停留在 UI 或限制性特定领域的语言中。
what is boomer
boomer 完整地实现了 locust 的通讯协议,运行在 slave 模式下,用 goroutine 来执行用户提供的测试函数,然后将测试结果上报给运行在 master 模式下的 locust。
与 locust 原生的实现相比,解决了两个问题。 一是单台施压机上,能充分利用多个 CPU 核心来施压, 二是再也不用提防阻塞 IO 操作导致 gevent 阻塞。
环境
- 服务器
- Ubuntu (2核4G300G)
- 压测机
- Mac
- Python 版本 Python 3.10.2
- Go 版本 go version go1.17.1 darwin/arm64
压测机
安装 locust
- 安装python3.7或者版本大于3.7 (mac 自带python2.X版本)
brew install python
查看安装版本
# python3 -V
Python 3.10.2
- Install Locust
# pip3 install locust
- 检查安装是否成功
# locust -V
locust 2.9.1.dev23
运行 locust: hello-world
要把大象放冰箱一共分三步:第一步打开冰箱–,不不不,第一步:先试试把小象(hello-world)看看能不能放的进去
在当前目录 workspace/ 底下创建 locustfile.py
from locust import HttpUser, task
class HelloWorldUser(HttpUser):
@task
def hello_world(self):
self.client.get("/hello")
self.client.get("/world")
启动 locust
# locust
locust
$: Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)
$: Starting Locust 2.9.1.dev23
访问 http://localhost:8089/ 可以看到
接着,这边使用golang启动一个http服务 localhost:80(path:/hello & /world)
locust - HelloWorld
进行一个简单测试 50 个并发用户,加速速度为 1个用户/秒,将其指向响应/hello和的服务器/world
点击 “start swarming”
切换标签页 “Charts” 可以查看:显示每秒请求数 (RPS)
查看:响应时间(以毫秒为单位)
查看: 用户数量
小结
本文主要介绍性能测试平台 locust + boomer 的环境搭建,以及运行http 测试用例helloworld,使用locust观测性能指数、图表等。