【问题标题】:Running Locust in distributed mode on Azure functions在 Azure 函数上以分布式模式运行 Locust
【发布时间】:2018-05-15 20:20:46
【问题描述】:

我正在构建一个小型实用程序,用于打包 Locust - 性能测试工具 (https://locust.io/) 并将其部署在 azure 函数上。只是一个有趣的副项目,可以帮助您了解无服务器的热潮。

这是 git 存储库:https://github.com/amanvirmundra/locust-serverless

现在我认为在无服务器架构上以分布式模式运行 locust 测试会很棒(天蓝色功能消耗计划)。 Locust 支持分布式模式,但它需要 slave 使用它的 IP 与 master 通信。就是这个问题!!

我可以提供多种功能,但我不太确定如何让它们在运行中相互交谈(无需人工干预)。

大声思考:

  1. 以某种方式获取主函数的 IP 并将其传递给从函数。不确定这在 Azure 函数中是否可行,但有些人想出了一种方法来使用 .net 库获取 azure 函数的 IP。我的是 python 版本,但我确信如果可以使用 .net 来完成,那么也会有 python 方式。
  2. 创建某种 VPN 并将功能映射到专用 IP。不确定这种映射在 azure 中是否可行。
  3. 有些人使用 AWS Lambdas (https://github.com/FutureSharks/invokust) 完成了这项工作。询问那个人或尝试理解代码。

需要建议来弄清楚什么是可能的,同时保持无服务器。对想法和/或代码贡献开放:)

更新

这是当前设置:

  1. 性能测试会话由 http 请求触发,该请求包含要发出的请求数、基本 url 和 no。要模拟的并发用户数。
  2. Lo​​custfile 定义测试设置和编排。
  3. Run.py 触发测试。

我现在想做的是为大规模性能测试设置主/从设置(集群)。

  • 我想主函数是由一个 http 请求触发的,具有类似的有效负载。
  • 主设备将依次触发从设备。
  • 当从属加入集群时,性能会话将开始。

【问题讨论】:

    标签: azure performance-testing azure-functions serverless locust


    【解决方案1】:

    你所描述的听起来不像是 Azure Functions 的好用例。

    函数应该是:

    • 由事件触发
    • 短时间运行(最长 10 分钟)
    • 无状态和短暂

    但确实,函数可以很好地进行负载测试,但设置应该不同:

    • 您为函数定义触发器(例如 HTTP 或事件中心)
    • 每个函数执行都会发出给定数量的请求,并行或顺序,然后退出
    • 某处有一个协调器(例如,只是一个控制台应用程序),它发送“命令”(HTTP 调用或事件)来触发函数

    因此,函数正在按照编排器定义的计划“倍增”负载。您依靠消费计划的可扩展性来确保在任何给定时间提供足够的执行。

    最大的区别是函数执行之间不相互通信,因此它们不需要 IP。

    我认为上面提到的示例也是基于 AWS Lambda is just calling Lambdas,它不会设置主客户端 lambdas 相互交谈。

    我想我的意思是,您可能根本不需要 Locust 框架,而是利用自动缩放 FaaS 的内置功能。

    【讨论】:

    • 如果你查看我的仓库,自述文件就是这样描述的。负载测试会话由 http 请求触发。给定数量的请求在有效负载中定义,编排器基本上是 python 脚本(locustfile)。我可以接受 10 分钟的会话,但是理论上,如果您将应用程序消费计划转换为每月/固定,它可以扩展到无限 - 但是这不会使其真正成为无服务器。
    • 我想在主从设置中,主服务器将由 http 请求触发。主机反过来将触发从机功能。一旦他们加入集群,负载测试会话就会开始。在会话结束时,master 将返回一个响应,其中包含 perf 测试会话的统计信息。我相信这些是无状态的,因为每个触发器都是独立于另一个的。
    • 更新了问题,只是为了详细说明当前的设置。
    • @AmanvirMundra 所以唯一缺少的就是用 HTTP 调用替换自定义的基于 IP 的协议。图书馆不允许吗?
    • 我不这么认为。至少文档没有这么说。我会询问图书馆的所有者,看看他们是否有任何建议/解决方法。
    猜你喜欢
    • 2021-12-01
    • 2021-12-28
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多