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

相关推荐
小陈永不服输42 分钟前
Windows下RabbitMQ完整安装指南
windows·分布式·rabbitmq
NPE~5 小时前
[docker/大数据]Spark快速入门
大数据·分布式·docker·spark·教程
Java小混子7 小时前
【Redis】缓存和分布式锁
redis·分布式·缓存
柯南二号8 小时前
【Java后端】【可直接落地的 Redis 分布式锁实现】
java·redis·分布式
测试老哥11 小时前
Jmeter自动化性能测试常见问题汇总
自动化测试·软件测试·测试工具·jmeter·接口测试·压力测试·性能测试
Rookie小强14 小时前
kafka的rebalance机制是什么
分布式·kafka
终端行者14 小时前
jenkins实现分布式构建并自动发布到远程服务器上 jenkins实现自动打包编译发布远程服务器
服务器·分布式·jenkins
秋名山码民1 天前
面试压力测试破解:如何从容应对棘手问题与挑战
面试·职场和发展·压力测试
码农小灰1 天前
Kafka消息持久化机制全解析:存储原理与实战场景
java·分布式·kafka
纪莫1 天前
Kafka如何保证「消息不丢失」,「顺序传输」,「不重复消费」,以及为什么会发生重平衡(reblanace)
java·分布式·后端·中间件·kafka·队列