触发关闭IOThub

时间:2018-03-09 13:04:33

标签: azure azure-functions azure-iot-hub

我的数据从我的系统发送到azure iot。我发送数据包的时间戳。然后我有一个由iothub触发的azure函数。在azure函数中,我得到消息并获取时间戳并记录数据到达函数所花费的时间。我还在我的系统上运行另一个程序,该程序监听iothub上的数据并记录该时间。   所以大多数时候,azure函数中的时间是以毫秒为单位,但有时,我看到触发azure函数的时间很长(我得出结论是因为从iot中心读取的程序显示数据很快到达了iot中心,没有延迟。)

有人知道为什么azure功能可能会触发迟到的原因

1 个答案:

答案 0 :(得分:0)

这是问同样的问题吗? https://github.com/Azure/Azure-Functions/issues/711

我会复制/粘贴我的答案给别人看:

  

根据我在日志和您的描述中看到的内容,我认为延迟可以解释为由功能应用程序流程的冷启动引起的。如果一个功能应用程序空闲大约20分钟,那么它将从内存中卸载,任何后续触发器将启动冷启动。   基本上,会发生以下事件序列:

     
      
  1. 功能应用程序空闲并卸载(这发生在您提到的触发器前约5分钟)。
  2.   
  3. 您发送新活动。
  4.   
  5. 事件最终会被我们的缩放控制器注意到,它会以10秒的间隔轮询事件。
  6.   
  7. 我们的缩放控制器启动您的功能应用程序的冷启动。这可以添加几秒钟,具体取决于您的功能应用程序的内容(在这种情况下大约为6秒)。
  8.         

    所以不幸的是,这是消费计划的已知行为。您可以在此处阅读此问题:https://blogs.msdn.microsoft.com/appserviceteam/2018/02/07/understanding-serverless-cold-start/。博客文章还讨论了一些方法,如果它对你的场景有问题,你可以解决这个问题。