【问题标题】:How to test Azure Function Scalability?如何测试 Azure 函数可扩展性?
【发布时间】:2019-08-15 23:38:05
【问题描述】:

由于我们是 Azure Function App 的新手,我们听说它的一项重要功能是可扩展性,但是 azure function Scale 是如何发挥作用的?它是自动缩小还是我们可以设置的任何机制?例如,规模大小限制的最大值。

当我们在本地调试 azure 函数时(我们已经尝试过 ServiceBusTrigger、EventHubTrigger、QueueTrigger 和 CosmosDBTrigger),似乎每次都一遍又一遍地多次调用同一个函数实例 虽然我们继续发送消息,但它不能像我们预期的那样扩展/并行工作,有什么好的方法可以在本地调试可扩展性吗?

【问题讨论】:

    标签: azure azure-functions azure-functions-runtime azure-function-app


    【解决方案1】:

    Azure Functions 的缩放由Scale Controller 决定:

    Scale Controller 仅在云端运行,因此无法在本地测试缩放。此控制器的内部工作原理也未公开。

    测试扩展的最佳方法是在云中实际进行概念验证,并确保您configure Application Insights。对函数应用进行负载测试后,您可以执行如下所示的 Log Analytics 查询,以查看是否已预配函数应用的多个实例:

    requests | 
    project timestamp, id, operation_Id, operation_Name, duration, cloud_RoleName, cloud_RoleInstance | 
    where cloud_RoleName =~ 'FUNCTION_APP_NAME' | 
    order by timestamp desc | 
    take 100
    

    cloud_RoleInstance 属性具有已配置资源的 ID。当该列包含多个值时,您就知道发生了缩放。

    说实话,测试 Azure Functions 是否自动缩放不应该是您的主要关注点,因为它是 Azure 的责任。您可能需要自动缩放来处理小型和大型工作负载,并且您可能有时间限制来完成处理。如果这是您真正关心的问题,那么您最好测量端到端的性能/时间。

    【讨论】:

    • 我很想知道您是否可以强制本地模拟器运行许多实例。不是为了调试,而是为了发现并发问题。
    【解决方案2】:

    azure 功能的可扩展性取决于hosting plan,并且有 3 种托管计划类型:消费计划、高级计划(它是预览版,所以我们现在可以忽略它)、专用计划(应用服务计划) .

    对于Consumption plan,它会根据传入事件的数量自动扩展。

    对于app service plan,您可以通过添加更多虚拟机实例来手动扩展,也可以启用自动扩展。更多细节可以参考这个article

    当你在本地运行它而不使用托管计划时,你看不到这种行为。

    希望这会有所帮助。

    【讨论】:

    • 在 Visual Studio 中本地调试时看不到缩放将如何工作是一个很大的缺点。我知道您的本地开发机器与 Azure 中的硬件不匹配,但某种中间立场来显示缩放会很好。
    猜你喜欢
    • 2018-01-27
    • 2012-12-23
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2017-06-13
    • 1970-01-01
    相关资源
    最近更新 更多