【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界面中进行配置。

相关推荐
初晴~1 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
有一个好名字1 小时前
zookeeper分布式锁模拟12306买票
分布式·zookeeper·云原生
yukai080085 小时前
【最后203篇系列】002 - 两个小坑(容器时间错误和kafka模块报错
分布式·kafka
老猿讲编程6 小时前
OMG DDS 规范漫谈:分布式数据交互的演进之路
分布式·dds
C++忠实粉丝6 小时前
服务端高并发分布式结构演进之路
分布式
字节程序员6 小时前
四种自动化测试模型实例及优缺点详解
开发语言·javascript·ecmascript·集成测试·压力测试
洛神灬殇7 小时前
彻底认识和理解探索分布式网络编程中的SSL安全通信机制
网络·分布式·ssl
龙哥·三年风水7 小时前
workman服务端开发模式-应用开发-vue-element-admin封装websocket
分布式·websocket·vue
李洋-蛟龙腾飞公司10 小时前
HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据文件资产迁移
分布式·华为·harmonyos
技术路上的苦行僧13 小时前
分布式专题(10)之ShardingSphere分库分表实战指南
分布式·shardingsphere·分库分表