温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

locust性能测试工具怎么在python中使用

发布时间:2020-12-29 09:14:05 来源:亿速云 阅读:209 作者:Leah 栏目:开发技术

本篇文章为大家展示了locust性能测试工具怎么在python中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一、简介

  Locust 是一个易于使用,分布式,用户负载测试工具。它用于负载测试 web 站点(或其他系统),并计算出一个系统可以处理多少并发用户。在测试期间,一大群虚拟用户访问你的网站。每个测试用户的行为由您定义,集群过程由 web UI 实时监控。这将帮助您在让真正的用户进入之前进行测试并识别代码中的瓶颈。

  Locust 完全是基于事件的,因此在一台机器上支持数千个并发用户是可能的。与许多其他基于事件的应用程序不同,它不使用回调。相反它通过 gevent 使用轻量级协程。这允许您用 Python 编写非常有表现力的场景,而不用回调使代码复杂化。

二、安装

 用 pip 管理工具安装: 

pip3 install locust

检查是否安装成功,执行命令:locust --v

locust性能测试工具怎么在python中使用

三、压测过程

1.编写脚本

      Locust 不同于 jmeter 可以用 GUI 来创建压测脚本。Locust 需要自己编写 python 脚本,压测负载脚本主要包含两个子类UserTask和WebsiteUser,分别继承TaskSet和Httplocust类,拥有这两个父类的公共属性和方法。

from locust import HttpLocust, TaskSet, task, between
import os,json

# 定义用户行为
class UserTask(TaskSet):
  def on_start(self):
    '''初始化数据,每个虚拟用户只执行一次'''
    self.client.post("/login",{"username":"test","password":"123456"})

  @task(2)
  def home_index(self):
    r = self.client.get("/sz/Home/DefaultHomeV2Request")
    assert json.loads(r.text)['Error'] == 0

  @task(1)
  def sale(self):
    self.client.get("/sz/Home/FlashSaleRequest")
    assert json.loads(r.text)['Error'] == 0

  def on_stop(self):
    '''销毁数据,每个虚拟用户只执行一次'''
    self.client.post("/SignOut",{"CustomerGuid":"c7d7e646-9ce2-499b-a22e-a3c98d4545fe"})

class WebsiteUser(HttpLocust):
  host = 'http://10.1.62.126'
  task_set = UserTask
  wait_time = between(3, 5)


if __name__ == "__main__":
  os.system('locust -f stress_test.py ')

locust 运行时:

  • on_start()  :每个并发用户在开始前各执行一次

  • on_stop():每个并发用户在结束后各执行一次

  • @task: 通过装饰器设置运行权重,比如上面代码中 执行任务 home_index 和 sale 的总请求为 2:1

  • assert:断言设置

  • wait_time :每个任务之间设置间隔时间,随机从3~5区间内取,单位是 s

  • locust -f:指定 .py 压测脚本路径

2. Locust 监控

 顺带提一下 locust web UI监控是基于 flask 框架,不指定 port 的话,默认地址:http://localhost:8089 

locust性能测试工具怎么在python中使用

开始测试,Locust 提供一个简易的监控界面,可以看到 RPS、响应时间 和 部分曲线图

locust性能测试工具怎么在python中使用

locust性能测试工具怎么在python中使用

locust性能测试工具怎么在python中使用

locust性能测试工具怎么在python中使用

3.运行模式

 1.web UI 模式

locust -f stress_test.py --web-host 10.1.44.31 --web-port 8090

--web-host:指定 web UI IP,默认 localhost

--web-port:指定 web UI 端口,默认 8089

2. no web 模式

locust -f stress_test.py --no-web -c 100 -r 20 -t 120

--no-web:指定无 web UI模式

-c:起多少 locust 用户(等同于起多少 tcp 连接)

-r:多少时间内,把上述 -c 设置的虚拟用户全部启动

-t:脚本运行多少时间,单位s

在 --no-web 模式下的报告如下:

locust性能测试工具怎么在python中使用

4.分布式进程

       Locust 是由 python 编写的,由于GIL的限制,单进程不能利用CPU多核的优势(实际测试结果也是一样,8核心的虚拟机,只有一核达到了95%以上的使用率,其余7核只围观,不出力)。所以单台机器上想要尽可能的压榨 CPU,只能开启多进程,一般有多少个核心启多少进程。

单台多进程:

 先启一个 master

locust -f /home/script/stress_test.py --web-host 10.1.62.223 --master

 再启 8 个 slave

locust -f /home/script/stress_test.py --slave

slave 节点启动后,在 locust 监控中能看到

locust性能测试工具怎么在python中使用

多台多进程:

 多台机器搭建 Locust 分布式 和 单台搭建多进程差不多。只有一个区别,如果 slave 和 master 不在一台机器上, slave 需要指定 --master-host 参数:

locust性能测试工具怎么在python中使用

上述内容就是locust性能测试工具怎么在python中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI