如何测试Azure功能的可伸缩性?

如何测试Azure功能的可伸缩性?,azure,azure-functions,azure-functions-runtime,azure-function-app,Azure,Azure Functions,Azure Functions Runtime,Azure Function App,因为我们刚刚接触Azure Function应用程序,我们听说它的一个伟大功能是可伸缩性,但是Azure Function scale是如何实现的呢?它是自动伸缩在后面还是我们可以设置的任何机制?例如,最大比例大小限制 当我们在本地调试azure函数时,我们尝试了ServiceBusTrigger、EventHubTrigger、QueueTrigger和CosmosDBTrigger,似乎每次在我们继续发送消息的同时多次调用同一函数实例,这并不像我们预期的那样可伸缩/并行工作,有什么好方法可以

因为我们刚刚接触Azure Function应用程序,我们听说它的一个伟大功能是可伸缩性,但是Azure Function scale是如何实现的呢?它是自动伸缩在后面还是我们可以设置的任何机制?例如,最大比例大小限制


当我们在本地调试azure函数时,我们尝试了ServiceBusTrigger、EventHubTrigger、QueueTrigger和CosmosDBTrigger,似乎每次在我们继续发送消息的同时多次调用同一函数实例,这并不像我们预期的那样可伸缩/并行工作,有什么好方法可以在本地调试可伸缩性吗?

azure功能的可伸缩性取决于,并且有三种类型的托管计划:消费计划、高级计划正在预览中,因此我们现在可以忽略它,即专用的planapp服务计划

例如,它会根据传入事件的数量自动缩放

例如,您可以通过添加更多VM实例手动向外扩展,也可以启用自动缩放。更多的细节你可以参考这个

当您在没有托管计划的情况下在本地运行它时,您无法看到这种行为


希望这能有所帮助。

Azure功能的扩展由以下因素决定:

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

测试伸缩性的最佳方法是在云中实际进行概念验证,并确保您可以。对功能应用程序进行负载测试后,您可以执行日志分析查询,如以下查询,以查看是否已设置功能应用程序的多个实例:

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功能是否自动缩放不应该是您主要关心的问题,因为这是Azure的责任。您可能需要自动缩放来处理小型和大型工作负载,并且您可能有完成处理的时间限制。如果这是您真正关心的问题,那么您最好测量端到端性能/计时。

我想知道您是否可以强制本地仿真器运行多个实例。不是为了调试,而是为了发现并发问题。在VisualStudio中进行本地调试时,看不到扩展将如何工作是一个很大的缺点。我知道你的本地开发机器无法与Azure中的硬件相匹配,但某种中间地带可以证明扩展是很好的。