【问题标题】:Does number of CPU threads limits locust USERS?CPU线程数是否限制蝗虫用户?
【发布时间】:2021-11-21 13:33:37
【问题描述】:

我正在使用 python + locust 进行性能测试。我主要使用 java 和 java 1 cpu thread = java thread。所以如果我有 12 个线程的 VM,我只能并行执行 12 个操作。

但是 locust 有参数 USERS 代表“同时 Locust 用户的峰值数量”。它的工作方式相同吗?如果我设置了 USERS = 25 但虚拟机只有 12 个线程,这是否意味着它同时只会并行执行 12 个操作,其余的将等到任何线程完成?

【问题讨论】:

    标签: python multithreading performance-testing load-testing locust


    【解决方案1】:

    Locust 使用 gevent 使 I/O 异步。单个 Locust/Python 进程只能使用一个 CPU 线程(稍微过于简单化),但它可以发出并发 HTTP 请求:当一个用户发出请求时,控制权立即移交给其他正在运行的用户,这又可以触发其他请求。

    这与 Java(线程但通常是同步的)根本不同,但类似于 JavaScript。

    只要你运行足够多的 Locust 工作进程,这是一种非常高效的方法,单个进程可以处理数千个并发用户(实际上,用户数几乎从来没有限制 - 每秒的请求数是限制因素)

    查看 Locust 的文档 (https://docs.locust.io/en/stable/running-locust-distributed.html)

    由于 Python 不能在每个进程中充分利用一个以上的内核(请参阅 GIL),因此您通常应该在工作机器上的每个处理器内核上运行一个工作实例,以利用它们的所有计算能力。

    【讨论】:

    • 例如,我可以使用单个 Locust 进程为我定义的工作流生成 4000 多个用户。工作人员在双 CPU AWS 实例上运行并且仅使用一个 CPU,您可以运行多个工作人员以进一步增加生成的用户数量。您可以生成的用户数量取决于您让他们做什么,以及其他因素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多