当出站 TCP 端口耗尽时,Azure Functions on a Consumption Plan 的行为如何?端口限制是什么?

Sen*_*nel 5 azure azure-functions

我正在考虑将 Azure Functions on a Consumption Plan 作为在应用服务计划上的 Azure WebJobs 上实施某些内容的替代方案。

最近在使用 WebJobs 时,我们在监控和识别导致应用服务计划实例上的 TCP 端口耗尽的应用程序时遇到问题。当一个应用程序导致端口耗尽时,同一计划中的所有应用程序都会关闭,并且目前无法通过 Azure 门户或后端监控来诊断罪魁祸首。

我想知道 Azure Functions on a Consumption Plan 在这方面有何不同,在监视、扩展机制和对同一计划中其他功能的影响以及诊断此类事件的原因方面。

Pau*_*tum 3

简短的回答:如果您在编写函数代码时考虑到水平扩展,您应该会发现端口耗尽对整体吞吐量的影响最小。

Azure Functions 的消费计划与专用应用服务计划的工作方式非常不同。您描述的一个应用程序影响其他应用程序性能的问题在专用上是有意义的,因为所有这些应用程序都在同一组虚拟机上运行。对于消耗计划,您的函数应用将根据工作负载随着时间的推移在许多不同的 VM 上运行。函数应用程序的给定实例可能会遇到端口耗尽的问题,但这会导致该实例的吞吐量下降,进而导致更多函数应用程序实例被激活。此外,同一计划上的多个基于消耗的功能应用程序可以并且将在不同的虚拟机上运行,​​因此它们不会竞争资源。

当然,在某些情况下这不起作用 - 如果您有一个计时器触发器正在创建数百个出站连接,您绝对可能会遇到端口耗尽问题,因为计时器无法扩展到多个实例。在这种情况下,答案是让您的计时器将事件添加到轻松支持水平扩展的对象中,例如队列、主题或事件中心。

在监控/诊断方面,情况与专用的情况基本相同(即困难)。但正如我上面概述的那样,消费计划中对此的需求应该大大减少。如果您发现任何相反行为,请告知我们!