You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提升分布式Locust压测RPS?当前1200 RPS无法突破

优化分布式Locust负载测试RPS至2000的方向

根据你的测试场景(无业务逻辑的虚拟服务、CPU未跑满、多worker下RPS卡在1200),瓶颈大概率不在服务计算能力,而是在网络IO、Locust配置或Docker资源限制上。以下是几个可落地的优化方向:

  • 先调整wait_time解除硬限制:你当前设置的wait_time = constant(1)意味着每个用户每1秒才发起一次请求,直接把理论最大RPS锁在了3000(3000个用户),但实际受网络和调度损耗没达标。如果目标是压到服务极限,建议改成wait_time = constant(0)(用户连续发起请求),或者直接删除这个配置(默认是随机等待,但我们要极限就设0)。这一步是最容易快速提升RPS的操作。

  • 优化Docker资源分配:Mac上的Docker Desktop默认会限制容器的CPU和内存配额,哪怕你的Mac有6核,容器可能只能用到2核。你可以:

    1. 打开Docker Desktop设置,把CPU分配拉满(比如6核),内存调高到4G以上;
    2. 在docker-compose.yml中给worker容器添加资源限制/预留,避免容器间资源争抢:
      worker_locust:
        image: locustio/locust
        volumes:
          - ./:/mnt/locust
        command: -f /mnt/locust/locustfile.py --worker --master-host master_locust
        deploy:
          resources:
            limits:
              cpus: '1.0'
              memory: 512M
            reservations:
              cpus: '0.5'
              memory: 256M
      
  • 调优Http客户端连接池:短请求(比如仅返回"yo"的服务)的TCP握手开销占比极高,调大连接池可以减少重复握手的损耗。在你的locustfile.py中添加连接池配置:

    from locust import HttpUser, task, constant
    from requests.adapters import HTTPAdapter
    from urllib3.util.retry import Retry
    
    class QuickstartUser(HttpUser):
        wait_time = constant(0)
        def on_start(self):
            # 增大连接池大小,关闭不必要的重试
            adapter = HTTPAdapter(
                pool_connections=100,
                pool_maxsize=100,
                max_retries=Retry(total=0, connect=0, read=0)
            )
            self.client.mount("http://", adapter)
            self.client.mount("https://", adapter)
            # 开启Keep-Alive复用连接
            self.client.headers["Connection"] = "keep-alive"
    
  • 切换Docker网络模式减少转发损耗:Mac上的Docker bridge网络默认有一定的性能开销,对于短请求来说影响明显。可以尝试改用host网络模式(注意端口冲突),让容器直接使用主机网络:

    services:
      myservice:
        build:
          context: ../
        network_mode: host
      master_locust:
        image: locustio/locust
        ports:
          - "8089:8089"
        volumes:
          - ./:/mnt/locust
        command: -f /mnt/locust/locustfile.py --master
        network_mode: host
      worker_locust:
        image: locustio/locust
        volumes:
          - ./:/mnt/locust
        command: -f /mnt/locust/locustfile.py --worker --master-host localhost
        network_mode: host
    
  • 调整测试参数和worker数量:

    1. 尝试增加客户端数量到4000-5000,同时保持孵化率100,让所有客户端尽快进入请求状态;
    2. 增加worker数量到6个(和你的Mac核数一致),充分利用主机CPU资源;
    3. 降低Locust日志级别,启动时加上--log-level WARNING,减少日志输出的资源消耗。

按这个顺序逐步调整,先从wait_time和Docker资源开始,应该能快速突破1200RPS的瓶颈,达到2000的目标。

内容的提问来源于stack exchange,提问作者Anton Daneyko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:37:26