首页 > 其他分享 >Locust如何实现不均匀负载?

Locust如何实现不均匀负载?

时间:2024-03-20 15:46:54浏览次数:30  
标签:spawn 10 负载 users Locust 50 rate 均匀 用户数

一、背景要求

其实很多时候,根据业务场景的不同,我们要实时不均匀的负载,比如不同的时间段我们的负载量也不一样,

因为很多时候很多软件的用户访问时间都集中在晚上,白天访问量很低,那么针对这种情况我们如何来自定义压测场景呢?

其实我们Locust 支持自定义压测场景,比如(基于时间策略的阶梯式加压):

前10s和10-20s用户数为10;20-50s用户数为50;50-80s用户数为100;80s后用户数为30

二、实现逻辑

可以通过自定义列表对象,也就是压测场景,来符合我们的业务需求,例如:
'''descrition:多少秒后进入下一个阶段
“users:启动的用户数
span_rate:每秒要启动/停止的用户数'''
listShape=[
{"duration": 10, "users": 10, "spawn_rate": 10},
{"duration": 20, "users": 50, "spawn_rate": 10},
{"duration": 50, "users": 100, "spawn_rate": 10},
{"duration": 80, "users": 30, "spawn_rate": 10}
]
三、具体代码实现
import os.path
from locust import *

class UserBehavior(LoadTestShape):

'''descrition:多少秒后进入下一个阶段
“users:启动的用户数
span_rate:每秒要启动/停止的用户数'''
#自定义压测场景 前10s和10-20s用户数为10;20-50s用户数为50;50-80s用户数为100;80s后用户数为30
listShape=[
{"duration": 10, "users": 10, "spawn_rate": 10},
{"duration": 20, "users": 50, "spawn_rate": 10},
{"duration": 50, "users": 100, "spawn_rate": 10},
{"duration": 80, "users": 30, "spawn_rate": 10}
]

def tick(self):
now_time=self.get_run_time()
for item in self.listShape:
if now_time< item['descrition']:
print('当前时间为;%s,用户数:%s'%(now_time,item['users']))
data=item['users'],item['span_rate']
return data

return None
class LoadTesting(HttpUser):
wait_time = between(1,2)
host='http://127.0.0.1:8000'

def on_start(self):
print('负载测试开始')
def on_stop(self):
print('负载结束')
@task
def work_porint(self):
self.client.post('/mlogin',data={'username':'admin','password':'<PASSWORD>'})

if __name__ == '__main__':
file_path =os.path.abspath(__file__)
os.system(f'locust -f {file_path} --web-host=127.0.0.1')

四、实现效果
最后我们来看下效果把:

 

   如果喜欢的话可以点个赞支持一下呗!

标签:spawn,10,负载,users,Locust,50,rate,均匀,用户数
From: https://www.cnblogs.com/yongheng999/p/18085371

相关文章

  • Locust如何实现负载测试?
    一、场景要求我们在使用locust时,有时候默认的场景无法满足我们的要求时,这时后我们需要自定义场景比如我们要设置每一段时间启动10个用户运行,执行60s后再一次启动10个用户,总共运行10分钟,默认的场景是无法满足这样的要求的,我们可以使用LoadTestshape类,LoadTestshape类提供了几种负......
  • 在Linux中,如何配置负载均衡器以分配网络流量?
    在Linux中配置负载均衡器以分配网络流量是一个复杂但重要的任务,它涉及到多个组件和步骤。下面将详细介绍配置负载均衡器的一般过程:一、选择负载均衡软件首先,你需要选择一个负载均衡软件。在Linux中,常用的负载均衡软件有HAProxy、Nginx和LVS(LinuxVirtualServer)等。这些软件都可......
  • Lvs+keepalived+nginx搭建高可用负载均衡集群
    环境配置master主机192.168.199.149,虚拟IP192.168.199.148back备机192.168.199.150真实服务器1192.168.199.155真实服务器2192.168.199.156关闭防火墙和selinuxmaster配置(149)添加虚拟IPipaddradd192.168.199.148/24devens33下载keepalivedyuminstallkeepali......
  • Locust 集合点的实现?
    一、什么是集合点?集合点用以同步虚拟用户,以便恰好在同一时刻执行任务。在[测试计划]中,可能会要求系统能够承受1000人同时提交数据,可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,就检查同时有多少用户运行到集合点,如果不到1000人,已经到集合点的......
  • Locust 断言的实现?
    一、检查点的方式有哪些:主要是python内置的assert断言(自动断言)还有locust中的catch_response断言(手动断言);那么这两者之间有什么区别呢?其实主要区别在与生成locust报告上面,手动断言失败,我们在locust上面可以清楚的看到报错信息,如果通过内置断言,即使断言失败我们也看不到错......
  • Locust 实现接口关联
    一、首先我们理解下什么是关联? 跟接口测试一样,我们经常需要将上一个接口返回的参数用于第二次请求二、业务场景1:用户需要先登录获取token,之后去加入购物车、下订单、充值等等行为都是需要用到这个身份验证三、解决方案:客户不是每次行为都需要登录,每个客户只需要登录一次......
  • gRPC的负载均衡
    目录一、什么是负载均衡1.1负载均衡软件1.2七层和四层负载二、负载均衡策略2.1轮循2.2加权轮循2.3最少连接数2.4最少连接数慢启动时间2.5加权最少连接2.6基于代理的自适应负载均衡2.7固定权重2.8加权响应2.9源IP哈希三、go-rpc负载均衡演示3.1proto3.2生成go文件3.......
  • F5负载均衡系列教程四【SNAT实验】
     基础拓扑如下所示:F5里面的SNAT可以理解为路由交换里面的源地址转换,可以将特定的源地址转成另外一个ip地址(IP地址池)去访问目的服务器参考文档:https://my.f5.com/manage/s/article/K7820实验环境如下,其中F5到后端服务器网络均路由可达VS地址poolmember测试的s......
  • 一文搞懂LVS负载均衡工作原理
    LVS(LinuxVirtualServer)是企业中常用的负载均衡方案,是一种基于Linux虚拟服务器,也是Linux标准内核的一部分。它能够实现高性能、高可用的服务器集群,具有良好可靠性、可扩展性和可操作性。说白了: LVS就是在计算机网络中,利用Linux虚拟服务器的作为一种媒介,实现请求的负载均衡策......
  • 在Linux中,如何配置负载均衡器以分配网络流量?
    1.NGINXNGINX是一款高性能的HTTP和反向代理服务器,也常用作负载均衡器。它支持多种负载均衡算法,如轮询、加权轮询、IP哈希等。配置步骤:安装NGINX:根据您的Linux发行版,使用相应的包管理器安装NGINX。配置负载均衡:编辑NGINX配置文件(通常位于/etc/nginx/nginx.conf或/etc/nginx/c......