您的当前位置:首页正文

分布式性能测试-通篇讲解 Locust 性能测试

2024-11-08 来源:个人技术集锦

分布式性能测试-小试牛刀

Locust 分布式负载生成概述

Locust 支持分布式负载生成,以模拟更高的并发负载。你可以通过以下方式来配置和使用分布式模式:

1. 基本概念

  • Master 实例:管理整个负载测试,运行 Locust 的 Web 界面,并协调各个 Worker 的任务。
  • Worker 实例:实际运行用户模拟负载,向 Master 实例报告统计数据。Worker 实例不会运行 Web 界面。

2. 单机模式

在单台机器上启动多个进程:

  • 启动一个主进程并指定进程数:

    locust --processes 4
    
    
  • 启动一个主进程并自动检测逻辑核心数:

    locust --processes -1
    
    

3. 多台机器模式

在一台机器上启动 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 实例的地址。

4. 使用 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 服务器的地址列表。

5. 分布式负载生成选项

  • -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 节点连接。

6. 节点间通信

可以通过消息钩子在 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
Top