【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

相关文章

性能测试介绍

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

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

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

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

开源分布式数据库中间件

转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

laravel框架实现redis分布式集群原理

在app/config/database.php中配置如下: 'redis' => array('cluster' => true,'default' => array('host' => '172.21.107.247','port' => 6379,),'redis1' => array('host' => '172.21.107.248','port' => 6379,),) 其中cl

基于MySQL实现的分布式锁

概述 在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制,即当某个线程获取到这个资源后,就立即对这个资源进行加锁,当使用完资源之后,再解锁,其它线程就可以接着使用了。例如,在JAVA中,甚至专门提供了一些处理锁机制的一些API(synchronize/Lock等)。 但是到了分布式系统的时代,这种

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------