locust 界面保持在 0 rps

问题描述 投票:0回答:1

我正在尝试对安装在带有 ubuntu 服务器的 VM 中的容器中的一个 mysql 服务器进行负载测试。为此,我在 python 中编写了以下脚本:

...

# Cria bot de teste
class MyUser(HttpUser):
    wait_time = between(1, 5)

    @task(1)
    def get_price(self):
        try:
            # Estabelece conexão com o banco de dados MySQL
            with connect(
                host="192.168.0.9",
                user="root",
                password="123",
                database="test1",
                port=3306
            ) as connection:
                with connection.cursor() as cursor:
                    # Executa uma query que busca o preço do produto
                    cursor.execute("SELECT preco FROM estoque WHERE id_codigo_barras = %s", ("3756392598566",))
                    result = cursor.fetchone()
                    price = result[0]
                    # Imprime o preço do produto retornado pelo banco de dados
                    print("Preço do produto: {}".format(price))
        except Error as e:
            print(e)

当我使用以下命令时,界面开始工作:

> locust -f advanced/tools/direct_locust_loadtest.py --host=http://localhost:8080

在我设置为图片的界面中:

config of test

但是 0 rps 保持在 0,即使提示正在生成响应。

prompt

我已经试过了:

  • 测试是否正确运行并且请求被记录到 IDE 的提示符中。
  • 打开浏览器并输入地址“http://localhost:8089”。
  • 检查 Python 文件中的用户类名是否恰好是“MyUser”,以及方法是否使用“@task”装饰器正确注释。
  • 检查是否在 Locust 浏览器页面上,选择了“图表”选项卡并确保选择了“每秒请求数”选项。
  • 多次重新加载页面/重启 Locust 服务器。

我尝试了 chatgpt 的所有建议,它甚至建议来这里寻求帮助。谁能给个提示?

非常感谢!!!

python testing load-testing locust
1个回答
0
投票

Locust 只有在您告诉它时才知道您在做什么。您可以使用 Event Hooks 告诉 Locust 您的代码中发生了什么。如果您使用 Locust 的

HttpUser
然后使用
self.client
进行 http 调用,通常会自动为您触发适当的事件,除非您想覆盖默认事件,否则您的工作量会减少。

在您的情况下,即使您使用的是

HttpUser
,您也没有使用
self.client
进行 http 调用,因此 Locust 不会为您触发事件(顺便说一句,您可以只使用
User
代替)并且您必须自己触发事件,例如:

self.environment.events.request.fire(
        request_type="MySQL",
        name="execute id_codigo_barras",
        response_time=(time.perf_counter() - start_perf_counter) * 1000,
        response_length=response_length,
        response=response,
        context=None,
        exception=exception,
    )

事件中的所有参数都是可定制的。输入适合您需要的任何字符串或其他数据,Locust 将按原样报告。有关更多示例,请参见Locust 文档

© www.soinside.com 2019 - 2024. All rights reserved.