locust做性能测试

学习了下locust做性能测试,写个笔记,怕自己忘记。性能测试用jemeter好像多一些,这个了解着好玩。

环境安装:

安装python和pycharm

安装locustio和三个依赖包:greenlet,gevent,geventhttpclient-wheels

卸载掉老版本:pip uninstall greenlet gevent locust locustio

安装新版本:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  greenlet==0.4.15 gevent==1.5a2 geventhttpclient-wheels==1.3.1.dev2 locustio==0.13.5

最好是安装以上的版本,其他版本发现有报错。

基本使用方法:

基本用法,导包,然后定义2个雷,分别继承TaskSet和Httplocust。继承TaskSet的类用来定义任务,另一个类用来进行locust的一些设置。@task装饰器用来表示具体任务

from locust import HttpLocust, TaskSet, task

#用户行为类,写需要做的操作
class userbehavior(TaskSet):
    # 指定测试任务
    @task
    def test_login(self):
        self.client('/')


class Websiteuser(HttpLocust):
    #host地址和上面的client(‘’)里面的地址拼接成完整路径
    host = 'http:127.0.0.1/iwebshop'
    task_set = userbehavior
    max_wait = 5000
    min_wait = 2000

运行的命令:locust -f 脚本名称  

然后打开http:localhost:8080打开locust首页,输入总用户数,每秒访问数,运行即可自动压力测试

案例一:单点测试:登录的性能

分2步:1.写代码安排任务,2.数据库构造存储过程,造数据(要想登录成功需要表中有该用户)

写代码:

from locust import HttpLocust, TaskSet, task


class uerbehavor(TaskSet):
    @task
    def regist(self):
        #构造测试数据
        for i in range(0, 101):
            username = 'dabai' + str(i)
            login_data = {'logininfo': username,
                          'password': '123456'}
            self.client('/register', data=login_data)


class WebsiteSite(HttpLocust):
    host = 'http:127.0.0.1/iwebshop'
    task_set = uerbehavor
    max_wait = 5000
    min_wait = 2000

2.mysql数据库写一个存储过程

#创建一个存储过程,格式是以begin开始以end结束

create procedure login()

begin

#声明一个变量i,是int类型

declare i int;

while i <=3 do

insert into iwebuser(username,password)values(concat(dabai,i),'123456');

set i=i+1;

end whlie;

end

如果觉得这个数字3写死了不方便,可以传入参数num:login的括号加上num int,3替换成num,这样每次不用都输入一个num数了

还有时候会利用爬虫抓取页面元素,作为构造数据进行测试。

例如测试查询页面的性能时,会爬取页面商品关键词,然后写入csv表格作为测试数据

爬虫

from lxml import etree

response=requests.post('url').text

doc=etree.xpath(response)

keyword=doc.xpath('xpath路径'/text())

locust做性能测试执行很棒,但是监控指标太少,后续通过jmeter配合进行定位和调优的研究

如何构造100万甚至更多的性能压测?

1.2需要分布式部署。设置一台主控压力机和N台分布式压力机

在每台压力机上安装locust

把相关的测试脚本文件放在每台压力机上

明确一台主控压力机

在同一网段联网状态

2.执行命令

主控机:locust -f  ***.py --master

压力机:locust -f  ***.py --slave -host=ip地址(这里写master的地址)

3.设置虚拟用户

每个压力机设置10000个虚拟用户,合起来就足够多

locust参数说明

fails这个参数如果不超过10%可能可以接受,可能是需要刷新一下页面就好了

 average平均响应时间在3-7s正常可以可以接受,再长就比较慢了。注意图标是毫秒ms

最大响应时间,合不合格看测试开始定的标准

 上图中10。res/sec,表示每条请求数,表示压力机发送请求的情况,如下图平稳表示压力机工作正常

 响应时间:黄色是最大响应时间,绿色是最小响应时间。

需要注意最大响应时间的波峰,如果持续不断的波峰,不断增加,说明性能出现问题

如下图中黄色最高峰,延迟90000ms,很高了,但是马上下降了,性能问题不大

总结:关注一直持续高位的情况

问题:用户是逐步增加并发的。如下图如果希望同时并发该怎么做

 解决:设置集合点。

 

 总而言之,虽然locust的指标数很少,主要看fails失败的比例,average平均响应时间,最大和最小响应时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Locust 可以用于进行 MQTT 协议的性能测试。下面是一些关于使用 Locust 进行 MQTT 性能测试的步骤: 1. 安装 Locust:首先,确保已经安装了 PythonLocust。您可以使用 pip 命令来安装 Locust: ``` pip install locust ``` 2. 编写测试脚本:创建一个 Python 文件,例如 `mqtt_locustfile.py`,用于编写 Locust 的 MQTT 测试脚本。在脚本中,您需要导入必要的模块和库,并定义 Locust 的 MQTT 用户行为。 3. 配置 MQTT 连接:在测试脚本中,您需要配置 MQTT 服务器的连接信息,包括服务器地址、端口、用户名和密码等。 4. 定义用户行为:使用 Locust 提供的装饰器和函数来定义用户行为。您可以模拟用户发布消息、订阅主题等操作。例如,使用 `@task` 装饰器定义任务,并使用 `client.publish()` 函数来发布消息。 5. 设置性能测试参数:您可以设置并发用户数、用户生成速率等参数,以及消息的大小、频率等参数。 6. 启动 Locust:在命令行中导航到测试脚本所在的目录,并输入以下命令来启动 Locust: ``` locust -f mqtt_locustfile.py ``` 这将启动 Locust 并提供一个 web 界面。 7. 配置并运行测试:通过 Locust 的 web 界面,您可以配置并运行测试。您可以设置并发用户数、用户生成速率等参数,并监控测试的指标和结果。 8. 分析测试结果:Locust 提供了丰富的测试结果和统计信息,您可以通过 web 界面或者命令行查看并分析测试结果,以评估 MQTT 服务器的性能。 这些是使用 Locust 进行 MQTT 性能测试的基本步骤。希望对您有所帮助!如有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值