Locust 支持分布式负载生成,以模拟更高的并发负载。你可以通过以下方式来配置和使用分布式模式:
在单台机器上启动多个进程:
启动一个主进程并指定进程数:
locust --processes 4
启动一个主进程并自动检测逻辑核心数:
locust --processes -1
在一台机器上启动 Master 实例,然后在每个 Worker 机器上启动 Worker 实例:
启动 Master 实例:
locust -f my_locustfile.py --master
启动 Worker 实例(在每台 Worker 机器上):
locust -f - --worker --master-host <your master> --processes 4
f -
参数表示从 Master 上获取 locustfile 文件。<your master>
是 Master 实例的地址。locust-swarm
locust-swarm
插件简化了分布式负载生成的启动过程,并解决了防火墙/网络访问的问题:
安装 locust-swarm
:
pip install locust-swarm
启动分布式负载生成:
swarm -f my_locustfile.py --loadgen-list worker-server1,worker-server2 <any other regular locust parameters>
-loadgen-list
指定了 Worker 服务器的地址列表。-master-host <hostname or ip>
:指定 Master 节点的主机名或IP(默认为 localhost
)。-master-port <port number>
:指定 Master 节点的端口(默认为 5557
)。-master-bind-host <ip>
:指定 Master 节点绑定的网络接口(默认为 ``)。-master-bind-port <port number>
:指定 Master 节点监听的端口(默认为 5557
)。-expect-workers <number of workers>
:在启动 Master 节点时,等待指定数量的 Worker 节点连接。可以通过消息钩子在 Master 和 Worker 节点间进行通信:
from locust import events
from locust.runners import MasterRunner, WorkerRunner
# Worker 收到 'test_users' 消息时触发
def setup_test_users(environment, msg, **kwargs):
for user in msg.data:
print(f"User {user['name']} received")
environment.runner.send_message('acknowledge_users', f"Thanks f