在Azure功能上以分布式模式运行Locust

时间:2018-05-15 02:12:11

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

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

这里是git repo:https://github.com/amanvirmundra/locust-serverless

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

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

大声思考:

  1. 以某种方式获取主功能的IP并将其传递给从功能。不确定Azure功能是否可行,但有些人已经找到了一种使用.net库获取天蓝色IP功能的方法。我是一个python版本,但我相信如果可以使用.net完成,那么也会有一个python方式。
  2. 创建某种VPN并将功能映射到私有IP。不确定在azure中是否可以进行这种映射。
  3. 有些人使用AWS Lambdas(https://github.com/FutureSharks/invokust)完成了此操作。询问那个人或尝试理解代码。
  4. 需要建议找出什么可能同时保持服务器无服务器。对想法和/或代码贡献开放:)

    更新

    这是当前的设置:

    1. 性能测试会话由http请求触发,该请求包含要进行的请求数,基本URL和否。并发用户模拟。
    2. Locustfile定义测试设置和编排。
    3. Run.py触发测试。
    4. 我现在要做的是进行大规模性能测试的主/从设置(群集)。

      • 我认为主函数是由一个具有类似有效负载的http请求触发的。
      • 主人将依次触发奴隶。
      • 当从属服务器加入群集时,性能会话将开始。

1 个答案:

答案 0 :(得分:0)

您所描述的内容并非听起来像是Azure功能的一个很好的用例。

函数应该是:

  • 由事件触发
  • 短跑(最多10分钟)
  • 无国籍和短暂的

但实际上,函数很适合进行负载测试,但设置应该不同:

  • 您可以为功能定义触发器(例如HTTP或事件中心)
  • 每个函数执行并行或按顺序执行给定数量的请求,然后退出
  • 某处有一个orchestrator(例如只是一个控制台应用程序),他们发送"命令" (HTTP调用或事件)触发函数

所以,功能是"乘以"根据协调器定义的计划加载。您依靠消耗计划可伸缩性来确保在任何给定时间都配置了足够的执行。

最大的区别是功能执行不会互相通话,因此他们不需要IP。

我认为上面提到的示例基于AWS Lambda is just calling Lambdas,它没有设置master-client lambdas相互交谈。

我想我的观点是你可能根本不需要那个Locust框架,而是利用自动标量FaaS的内置功能。<​​/ p>