我有以下功能应用程序在消费计划上运行:
使用http触发器我启动进程,触发器启动长时间运行的编排
编排+活动触发器同步数据(从一个系统获取数据并将其发送到另一个系统)。每个活动仅按顺序读取和处理一定量的数据,以免达到消耗计划限制。
以防万一,在处理完每个页面后,我们人为地在 Orchestrator 中应用空闲时间(30 秒),并确保我们不会达到限制。
整个过程通常持续15-20小时。
前 1-2 次运行结果符合预期 - 应用程序处理了所有数据,没有任何意外延迟。
然后一些奇怪的事情开始了 - 根据日志(App Insights)
每隔约 20 分钟,应用程序就会挂起约 8 分钟且不执行任何操作。
例如,页面在 10:00:00 处理,应用程序等待 30 秒,下一页在 10:08:00 开始处理。
然后 20 分钟再次看起来正常,直到 10:28:00,应用程序再次挂起,直到 10:36:00
这是消费计划中预期的吗?
我在日志中没有看到任何错误或达到某些限制的任何其他内容 - https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox
我还检查了该应用程序的指标。
连接 - 应用程序使用 ~50-60(限制为 600)
我不会在应用程序内创建任何线程或使用缩放 - 所以我相信线程不应该是任何问题。不管怎样,指标显示 - 不同时间段内最多 100 个(限制为 512 个)
处理过程中内存工作集显示 ~800 MB
根据指标,函数每天的执行次数约为 15k 次调用。
此应用程序是此消费计划中唯一的应用程序
我很困惑。有什么建议吗?
更新1:现在我在日志中看到了一些东西。 为什么主机在我的进程中停止了? 消费计划有问题还是什么?
谢谢!
我同意@alex消费计划的默认限制为10分钟,并且在该间隔之后就会超时。为了持续运行持久编排功能,您可以使用 Azure Function 应用程序高级版或应用程序服务专用计划。
Azure Functions Premium 计划包含:-
始终准备好实例,并且在启动功能时没有延迟。它包含预热实例,可减少冷启动。 Premium 计划的超时时间也可以设置为无限制,默认值设置为 30 分钟。
参考这个Ms文件进行比较。
此外,为了获得有关功能应用程序性能的更多见解,请访问诊断和解决问题部分并检查风险评估、可用性和性能:-