当出站TCP端口用尽且端口限制是什么时,消耗计划上的Azure功能如何表现?

我正在考虑使用消费计划上的Azure功能,作为在App Service计划上在Azure WebJobs上实现某些功能的替代方法.

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

我想知道消费计划中的Azure功能在这方面有何不同,包括监控,扩展机制和对同一计划中其他功能的影响,以及诊断此类事件的原因.

最佳答案 简短回答:如果您在编写具有水平刻度的功能代码时,您会发现端口耗尽对整体吞吐量的影响最小.

Azure功能的使用计划与专用的应用服务计划的工作方式完全不同.您描述的一个影响其他应用程序性能的应用程序的问题在专用上是有意义的,因为所有这些应用程序都在同一组VM上运行.对于消费计划,您的功能应用程序将根据工作负载在一段时间内在许多不同的VM上运行.您的功能应用程序的给定实例可能会受到端口耗尽的影响,但这会导致该实例的吞吐量降低,从而导致您的功能应用程序的更多实例被激活.此外,同一计划中的多个基于消费的功能应用程序可以并将在不同的VM上运行,因此它们不会竞争资源.

当然有些情况下这不会起作用 – 如果你有一个创建数百个出站连接的定时器触发器,你绝对会遇到端口耗尽问题,因为定时器不能扩展到多个实例.在这种情况下,答案是让您的计时器将事件添加到容易支持水平扩展的事件,例如队列,主题或eventhub.

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

点赞