【问题标题】:Locust: How to use distributed mode programmaticallyLocust:如何以编程方式使用分布式模式
【发布时间】:2021-12-01 03:52:35
【问题描述】:

我正在使用 locust 对一堆应用程序进行负载测试,问题是它使用了 90% 以上的 CPU,所以我想切换到 master 和 worker 的分布式模式,我知道它是如何在命令中完成的行,但我使用 locust 作为库,似乎文档没有涵盖这种情况,这是我的代码的一些 sn-ps:

用户

# host, port and reqs are external parameters
class User(HttpUser):
    host = f"{host}/{port}"

    @task
    def task1(self):
      for req in reqs:
        self.client.request(req['method'],req['path'],name=f"{port}",headers=req['headers'],data=req['body'])

    def on_start(self):
        self.client.verify = False

主要

env = Environment(user_classes=[User])
env.create_local_runner()

# env.create_web_ui("127.0.0.1", 8089)

gevent.spawn(stats_printer(env.stats))
gevent.spawn(stats_history, env.runner)

csvWriter = StatsCSVFileWriter(
            environment=env,
            base_filepath=f"{CWD}/outputs/{port}",
            full_history=True,
            percentiles_to_report=[0.5,0.6,0.7,0.8,0.9, 0.95, 0.99]
  )
gevent.spawn(csvWriter)
  
env.runner.start(100, spawn_rate=5)

gevent.spawn_later(30,lambda: saveReportAndQuit(env,port))

env.runner.greenlet.join()

# env.web_ui.stop()

python 版本:3.9.7

蝗虫版本:2.4.0

【问题讨论】:

    标签: python load-testing locust


    【解决方案1】:

    蝗虫文档do in fact mention this。他们没有完整的示例,当然,但是您 should have what you need 可以从文档中进行操作。

    Environment 实例的 create_local_runner、create_master_runner 或 create_worker_runner 可用于启动 Runner 实例,可用于启动负载测试

    create_worker_runner(master_host, master_port)

    为此环境创建一个 WorkerRunner 实例

    参数 master_host – 正在运行的主节点的主机/IP master_port – 主节点上要连接的端口

    您需要在代码中知道主服务器的 IP 地址才能使用它,而 Locust 无法真正帮助您。但是你应该能够做这样的事情:

    env = Environment(user_classes=[User])
    env.create_worker_runner('0.0.0.0', 5557)
    env.runner.greenlet.join()
    

    我不认为你需要start worker runner,因为主人应该告诉它你的测试何时开始,但我不是 100% 确定。试试看会发生什么。

    此外,如果您要为 master 和 worker 使用相同的文件,您将需要一些逻辑来决定要执行的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 2021-11-02
      • 1970-01-01
      • 2021-03-24
      • 2012-07-09
      相关资源
      最近更新 更多