【Locust分布式压力测试】

2024-04-11 14:04
文章标签 测试 分布式 压力 locust

本文主要是介绍【Locust分布式压力测试】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Locust分布式压力测试

https://docs.locust.io/en/stable/running-distributed.html

在这里插入图片描述

Distributed load generation
A single process running Locust can simulate a reasonably high throughput. For a simple test plan and small payloads it can make more than a thousand requests per second, possibly over ten thousand if you use FastHttpUser.

But if your test plan is complex or you want to run even more load, you’ll need to scale out to multiple processes, maybe even multiple machines. Fortunately, Locust supports distributed runs out of the box.

To do this, you start one instance of Locust with the --master flag and one or more using the --worker flag. The master instance runs Locust’s web interface, and tells the workers when to spawn/stop Users. The worker instances run your Users and send statistics back to the master. The master instance doesn’t run any Users itself.

To simplify startup, you can use the --processes flag. It will launch a master process and the specified number of worker processes. It can also be used in combination with --worker, then it will only launch workers. This feature relies on fork() so it doesn’t work on Windows.

分布式发电
运行Locust的单个进程可以模拟相当高的吞吐量。对于一个简单的测试计划和较小的有效负载,它每秒可以发出超过一千个请求,如果使用fastttpuser,则可能超过一万个请求。

但是如果您的测试计划很复杂,或者您想要运行更多的负载,那么您将需要扩展到多个进程,甚至可能是多台机器。幸运的是,Locust支持开箱即用的分布式运行。

为此,使用——master标志启动一个Locust实例,使用——worker标志启动一个或多个Locust实例。主实例运行Locust的web界面,并告诉worker何时生成/停止user。工作实例运行用户并将统计数据发送回主实例。主实例本身不运行任何Users。

为了简化启动,可以使用——processes标志。它将启动一个主进程和指定数量的工作进程。它也可以与——worker结合使用,那么它只会启动worker。此功能依赖于fork(),因此在Windows上不起作用。

在这里插入图片描述

Because Python cannot fully utilize more than one core per process (see GIL), you need to run one worker instance per processor core in order to have access to all your computing power.
由于Python不能充分利用每个进程的多个内核(参见GIL),因此您需要为每个处理器内核运行一个工作实例,以便访问所有的计算能力。

在这里插入图片描述

There is almost no limit to how many Users you can run per worker. Locust/gevent can run thousands or even tens of thousands of Users per process just fine, as long as their total request rate (RPS) is not too high.
对于每个工作线程可以运行多少个用户,几乎没有限制。只要它们的总请求率(RPS)不太高,蝗虫/gevent可以在每个进程中运行数千甚至数万个用户。

If Locust is getting close to running out of CPU resources, it will log a warning. If there is no warning but you are still unable to generate the expected load, then the problem must be something else.
如果Locust即将耗尽CPU资源,它将记录一个警告。如果没有警告,但您仍然无法生成预期的负载,那么问题一定是别的。

**

locust spawn设置多少合适

**
Locust的并发用户数量是通过设置master节点上的–num-users和–spawn-rate参数来控制的。–num-users表示总的模拟用户数,–spawn-rate表示每秒启动的用户数。

设置多少个用户数和启动速率合适取决于几个因素:

系统资源:确保你的机器有足够的CPU和内存来支持更多的并发用户。目标系统:了解你测试的服务或系统的处理能力,确保不会超出其处理限制。测试目标:确定你想要模拟的用户负载类型和数量。

一般来说,设置合适的用户数和启动速率可以遵循以下步骤:

开始时设置较低的用户数和较高的启动速率,观察系统性能。当达到系统瓶颈,例如响应时间增加、错误率上升时,减少用户数或减慢启动速率。根据测试结果,逐渐增加用户数或启动速率,直到达到预期的性能指标或者资源使用达到瓶颈。

下面是一个示例命令,用于设置总共1000个用户,每秒启动200个用户:

locust --no-web --host=http://example.com --num-users=1000 --spawn-rate=200

这里使用了–no-web参数来表示不启动Web界面,直接在命令行运行测试。如果你想要使用Web界面,可以不加这个参数,并且在不指定用户数和启动速率的情况下直接启动Locust,然后在Web界面中进行配置。

这篇关于【Locust分布式压力测试】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894282

相关文章

redis+lua实现分布式限流的示例

《redis+lua实现分布式限流的示例》本文主要介绍了redis+lua实现分布式限流的示例,可以实现复杂的限流逻辑,如滑动窗口限流,并且避免了多步操作导致的并发问题,具有一定的参考价值,感兴趣的可... 目录为什么使用Redis+Lua实现分布式限流使用ZSET也可以实现限流,为什么选择lua的方式实现

Seata之分布式事务问题及解决方案

《Seata之分布式事务问题及解决方案》:本文主要介绍Seata之分布式事务问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Seata–分布式事务解决方案简介同类产品对比环境搭建1.微服务2.SQL3.seata-server4.微服务配置事务模式1

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分