Locust 官方文档 5:分布式执行

虽然 Locust 通过协程可以实现单机大量并发,但是对多核 CPU 的支持并不好,可以通过在一台机器上启动多个 Locust 实例实现对多核 CPU 的利用(单机分布式)。

Once a single machine isn’t enough to simulate the number of users that you need, Locust supports running load tests distributed across multiple machines.

如果单台计算机不足以模拟所需的用户数量,Locust 也支持在多台计算机上进行分布式负载测试。

To do this, you start one instance of Locust in master mode using the --master flag. This is the instance that will be running Locust’s web interface where you start the test and see live statistics. The master node doesn’t simulate any users itself. Instead you have to start one or -most likely-multiple worker Locust nodes using the --worker flag, together with the --master-host (to specify the IP/hostname of the master node).

为此,你可以使用 --master 来标识当前启动的 Locust 实例是一个主节点。此实例会收集测试过程的数据并查看实时统计的结果。设置虚拟用户数量也是在主节点上进行设置,因为只有主节点能够看到 web UI 界面。

主节点本身不会模拟任何用户,相反,必须使用 --worker 标识工作节点。并在工作节点通过 --master-host 指定主节点的 IP/host。工作节点可以只有一个或多个。

A common set up is to run a single master on one machine, and then run one worker instance per processor core on the worker machines.

常见的设置是在一台计算机上运行一个主节点,然后在工作计算机上“每个处理器内核运行一个工作节点”。

Note

Both the master and each worker machine, must have a copy of the locust test scripts when running Locust distributed.

注意:分布式运行 Locust 时,主节点计算机和每个工作节点计算机都必须具有 Locust 测试脚本的副本。

Note

It’s recommended that you start a number of simulated users that are greater than number of user classes * number of workers when running Locust distributed.

Otherwise - due to the current implementation - you might end up with a distribution of the User classes that doesn’t correspond to the User classes’ weight attribute. And if the hatch rate is lower than the number of worker nodes, the hatching would occur in “bursts” where all worker node would hatch a single user and then sleep for multiple seconds, hatch another user, sleep and repeat.

注意:建议你使用 Locust 分布式运行时启动的虚拟用户数量大于 User 类数量 * 工作节点数量。否则,由于当前的实现方式,你最终可能会获得与用户类的 weight 属性不对应的 User 类分布。而且,如果执行率低于工作节点的数量,所有工作节点将对生成一个虚拟用户,然后休眠数秒钟,再生成另一个虚拟用户,然后重复休眠(没看懂,反正虚拟用户数要大于 User 类数量 * 工作节点数量)。

Example

To start locust in master mode:

启动一个 Locust 工作节点:

locust -f my_locustfile.py --master

And then on each worker (replace 192.168.0.14 with IP of the master machine, or leave out the parameter alltogether if your workers are on the same machine as the master):

然后在每个工作节点上(用你的主节点计算机IP替换192.168.0.14):

locust -f my_locustfile.py --worker --master-host=192.168.0.14

如果你的工作节点与主节点在同一台计算机上,则不设置参数。

Options 选项

--master

Sets locust in master mode. The web interface will run on this node.

将当前 Locust 实例设置为主节点。Web 界面将在此节点上运行。

--worker

Sets locust in worker mode.

设置 Locust 工作节点。

--master-host=X.X.X.X

Optionally used together with --worker to set the hostname/IP of the master node (defaults to 127.0.0.1)

(可选)指定工作节点的同时,通过此命令指定主节点的 host/IP,默认为 127.0.0.1

--master-port=5557

Optionally used together with --worker to set the port number of the master node (defaults to 5557).

(可选)指定工作节点的同时,通过此命令指定主节点的端口,默认为 5557

--master-bind-host=X.X.X.X

Optionally used together with --master. Determines what network interface that the master node will bind to. Defaults to * (all available interfaces).

(可选)与 --master 一起使用,确定主节点将绑定到的网络 IP。默认为 *(所有可用 IP)。

--master-bind-port=5557

Optionally used together with --master. Determines what network ports that the master node will listen to. Defaults to 5557.

(可选)与 --master 一起使用,确定主节点将监听的端口。默认为 5557。

--expect-workers=X

Used when starting the master node with --headless. The master node will then wait until X worker nodes has connected before the test is started.

使用 --headless (无 Web UI 模式)启动主节点时使用。然后,主节点将等待,直到 X 个工作节点已连接,然后才能开始测试。

使用 Docker 进行分布式执行

查看 Running Locust with Docker

没有 web UI 的情况下运行 Locust

查看 Running Locust distributed without the web UI

在逐步加载模式下运行的 Locust

查看 Running Locust in Step Load Mode

提高 Locust 性能

如果你打算运行大规模负载测试,则可能有兴趣使用 Locust 附加的备用HTTP客户端。你可以查看更多内容: Increase Locust’s performance with a faster HTTP client

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容