【问题标题】:Different data set for each thread in locust / Thread control in locust蝗虫中每个线程的不同数据集/蝗虫中的线程控制
【发布时间】:2020-10-15 07:53:46
【问题描述】:

我想对分布式应用程序进行负载测试,我决定使用 Locust。我面临的问题是这个应用程序有许多不同的输入,我要避免这些输入的重复。

例如: 让我们考虑有 4 个输入(A、B、C、D)。现在我正在从文件中读取这些输入并发布在应用程序的 API 上。问题是,如果我有将输入 A 发布到 API 的任务,我生成的所有线程都会将“A”发布到 API,从而使其重复。我想要一种机制,我可以将不同的输入提供给产生的不同线程(用户)。

有没有办法让我可以控制线程(用户)或简单地为他们提供不同的输入?

【问题讨论】:

    标签: python multithreading performance concurrency locust


    【解决方案1】:

    您也许可以使用正在运行的用户的 greenlet 标识符

    import greenlet
    ...
    (inside your task)
    id = greenlet.getcurrent().minimal_ident
    

    它们在 locust worker 中并不是唯一的,但也许你不是分布式运行的。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,在 medium.com 上找到了一个 article(由 Karol Brenja 撰写)探讨了这个主题。文章中的代码不能与最新版本(截至撰写时为 1.4.4)的 locust 一起工作。

      简而言之:

      1. 在greenlet的主/本地节点上启动ZMQ“服务器”,将测试数据(A、B、C、D)排队
      2. 从 worker 连接到 master 上的服务器
      3. 服务器响应队列中的输入之一
      4. Worker 使用 testdata 运行任务

      这也适用于本地模式,只要在阻塞模式下不请求测试数据。

      【讨论】:

        猜你喜欢
        • 2021-11-21
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        • 2019-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多