自上周以来,我们在向 Azure 函数发出 HTTP 请求时开始看到奇怪的行为。
一些背景:
观察
行动
我想与社区分享,真正有效的是提高 Azure Function App 的规模。我们采用应用服务计划类型的托管,并且生产中的实例数为 1,我们注意到了该问题。如果我们扩大到 2 或更高的计数,问题就会得到控制。
我们尝试了一些方法,包括运行 dotnet profiler 来识别资源消耗代码,以及作为真实场景对超过 10 万用户进行负载测试。
到目前为止,最理想的方法是转向 Elastic Premium 计划 作为主机层的选择,并将在我们改进这一点并确定实际情况时分享进一步的更新。
尽管它不是专门针对 DNS 或基础设施的,但在我们的测试中发现该函数是一个非静态函数。通常当你创建一个新函数时,它会被修饰为静态。
我们会看到,即使我们使用 azurite [本地模拟器],HTTP 函数也需要 3 秒以上才能触发。在 Azurite 上,我们看到了多个 409,经过调查我们发现情况就是这样,因为该函数必须获取主机锁租约。
我们创建了一个新的项目,从头开始创建功能来模拟效果等等。
最后,有效的是,如果将函数修饰为静态,则可以修复此租约锁定问题并按预期立即触发。
在[![在此处输入图像描述][1]][1]之前
[![在此处输入图像描述][2]][2]之后
这一更改解决了我们一直在 Azure 上的 DNS 和其他技术领域进行挖掘的问题。