我们有一个简单的Azure函数来进行DocumentDB查询。这似乎是我们第一次称之为漫长的等待,然后连续的呼叫非常快。
例如,我刚打开我们的应用程序,第一个函数调用需要10760毫秒,任何最终用户都明显可以注意到。在此之后,所有函数调用大约需要100毫秒进行处理,几乎察觉不到。
好像Azure函数中有一些“唤醒”循环。是否有某种方法可以最大限度地减少这种情况,或者更好的方法是将其记录在某处,以便我们能够理解这里到底发生了什么?
我们有一个简单的Azure函数来进行DocumentDB查询。这似乎是我们第一次称之为漫长的等待,然后连续的呼叫非常快。
例如,我刚打开我们的应用程序,第一个函数调用需要10760毫秒,任何最终用户都明显可以注意到。在此之后,所有函数调用大约需要100毫秒进行处理,几乎察觉不到。
好像Azure函数中有一些“唤醒”循环。是否有某种方法可以最大限度地减少这种情况,或者更好的方法是将其记录在某处,以便我们能够理解这里到底发生了什么?
在消费计划上运行的功能应用确实具有空闲时间,之后它们有效地进入休眠状态。下次调用需要像你观察到的那样“唤醒它们”,人们在评论中提到了这一点。
至于为什么会发生这种情况,微软可以在多租户环境中最优化地分配计算工作负载,同时确保在功能实际工作的时间内只向第二个计费。这是无服务器的美。
对于不可接受的行为的工作负载,您可以考虑从消费计划转移到实际的App Service计划。或者,您可以实现一个定时器触发的函数,例如每分钟关闭一次,并通过ping您不想进入睡眠状态的函数将其用作“保持活动”机制。