乐趣区

关于paas平台:在Rainbond上使用Locust进行压力测试

Locust 简介

Locust 是一种易于应用、可编写脚本且可扩大的性能测试工具。并且有一个用户敌对的 Web 界面,能够实时显示测试进度。甚至能够在测试运行时更改负载。它也能够在没有 UI 的状况下运行,使其易于用于 CI/CD 测试。

Locust 使运行散布在多台机器上的负载测试变得容易。Locust 基于事件(gevent),因而能够在一台计算机上反对数千个并发用户。与许多其余基于事件的应用程序相比,它不应用回调。相同,它通过 gevent 应用轻量级过程。并发拜访站点的每个 Locust(蝗虫)实际上都在其本人的过程中运行(Greenlet)。这使用户能够在 Python 中编写十分有表现力的场景,而不用应用回调或其余机制。

疾速部署 Locust

Locust 利用已公布到 开源利用商店 ,搜寻 locust 装置最新2.5.1 版本即可。

装置实现后,您将会失去一个 Locust 主从集群,其中,master 组件负责提供 UI 界面,和并发工作的调度;slave 组件负责执行并发工作,slave 组件同时反对横向伸缩,当产生的测试并发达到肯定的限额时,只需扩大 slave 组件实例即可,例如:

如何应用

Locust_Master 提供了一个基于 WEB-UI 的图形化治理界面,首次登陆,会提醒输出一些信息:

默认用户明码:locust locust,可配置 Locust_Master 组件的环境变量 LOCUST_WEB_AUTH进行批改。

Number of users 填写模仿的并发用户数量,通过测试,单个 slave 实例能够轻松提供上千个用户并发的压力。

Spawn rate 填写 蝗虫 的孵化率,即每秒产生多少用户。

Host 填写想要压测的站点地址。

当 Host 以及用户,并发量定义结束当前,还须要去定义一下测试用例,即用户拜访 Host 之后的行为,Locust 是通过一个名为 /locustfile.py 的 Python 脚本来定义用户行为,在 Rainbond 平台的 Locust_Master 组件内 环境配置 -> 配置文件设置 进行编辑批改。

代码示例如下:

from locust import HttpUser, task, between

class MyUser(HttpUser):
    wait_time = between(5, 15)

    @task(2)
    def index(self):
        self.client.get("/")

    @task(1)
    def about(self):
        self.client.get("/docs/")

这个脚本将依照程序模拟以下行为:

  1. 申请 Host 的 / 门路两次
  2. 申请 Host 的 /docs/ 门路一次
  3. 每次执行工作之间,距离 5 -15 秒

之所以要这么设计的起因,是 Locust 的设计者们认为,真正的用户行为,不会像脚本一样接连不断的执行完所有的申请而后退出。更多的状况是,用户做完一件预先,会进展一会,比方读读阐明,思考下一步要干嘛。所以会在每个步骤之间留下一个随机时长的空白期。这种假如实际上更合乎用户理论行为。

这个文件,将会以配置文件的形式挂载到 locust_master 组件上,并且共享挂载给所有的 locust_slave 组件。这意味着,如果你想要更改这个文件的内容,只须要去编辑 locust_master 组件中,环境配置下所挂载的配置文件即可。而后更新整个 Locust 集群即可失效。

后果剖析

借助 Locust 提供的 WEB-UI 界面,咱们能够十分不便的剖析压力测试后果。

Statistics 页面,将向咱们展现所有被压测接口的汇总报告。后果包含:

Type 申请类型;
Name 申请门路;
Requests 申请总数;
Fails 失败次数;
Median 中位数响应工夫;
90%ile 90% 申请响应工夫;
Average 均匀响应工夫;
Min 最小响应工夫;
Max 最大响应工夫;
Average size 申请的均匀大小;
Current PRS 以后吞吐率;
Current Failures 以后错误率;

Charts 页面将次要后果绘制成为随工夫变动的图表,可能在趋势上给予用户指引。

除了这些之外,还有几项值得关注的值会在最下面一排全局展现,包含以后申请的主机域名、以后产生的并发用户数量、slave 节点数量、以后所有申请接口的总吞吐率、错误率。以及进行测试的按钮。

其它的几个页面会提供:

Failures 申请失败的接口及失败起因;
Expections 测试中意外的谬误以及谬误起因
Download Data csv 格局的测试数据下载地址
Workers 所有 slave 实例的信息

更多教程请参考 Locust 官网文档

对于 Rainbond

Rainbond 是一个开源的云原生利用治理平台,应用简略,不须要懂容器和 Kubernetes,反对治理多个 Kubernetes 集群,提供企业级利用的全生命周期治理,性能包含利用开发环境、利用市场、微服务架构、利用继续交付、利用运维、利用级多云治理等。

🌟 Github:https://github.com/goodrain/r…
😊 官网:https://www.rainbond.com?chan…
😉 微信群:请搜寻微信公众号 Rainbond 关注并增加群助手入技术交换群
🤔 钉钉群:请搜寻钉钉群号 31096419

退出移动版