【Azure Logic App】Logic App 的 Workflow 在执行中遇见了 ActionResponseTimedOut 问题

【Azure Logic App】Logic App 的 Workflow 在执行中遇见了 ActionResponseTimedOut 问题

问题描述

一个平时只需几百毫秒就能处理完成的Logic App Workflow,为什么突然变慢,甚至返回 HTTP 504 (ActionResponseTimeOut)?

问题解答

在问题分析中发现,Logic App是基于App Service架构搭建的。因为Logic App长时间空闲,所以它的Host被回收(IIS Web Application Pool),当新的workflow请求到达的时候,就会重新启动Host,从而触发了冷启动。

在冷启动过程中,导致整个过长耗时过长,超过了超过了Response Action的超时时间,最终返回ActionResponseTimeOut (504)。

基于以上情况,可以开启Logic App(App Serfvice)的AlwaysOn功能来降低冷启动的影响。

设置AlwaysOn功能,使得Logic App Host进程不被回收

冷启动的设计目的:

冷启动是Azure App Service/Logic App Standard平台的一种资源管理机制,其设计目的包括:

  • 资源优化:当站点在一段时间内没有任何请求时,平台会自动回收该站点的工作进程,释放底层计算资源(CPU,内存)。
  • 成本效益:对于非持续运行的工作负载,避免长期占用计算资源。

但是冷启动的代价是:当站点被回收后收到的第一个请求的时候,平台需要重新分配实例,加载运行时,初始化应用,整个过长通常需要数秒或者数十秒,具体取决于应用的复杂度和依赖项的数量。

如何避免冷启动:

启用Always On: Azure Portal --> Logic App资源 --> Configuration --> General settings  --> 将Always on 设置为On,如下图所示:

image

参考资料

App Service Always On配置说明:https://learn.microsoft.com/en-us/azure/app-service/configure-common#configure-general-settings

Azure Functions 冷启动说明:https://learn.microsoft.com/en-us/azure/azure-functions/event-driven-scaling#cold-start

正在加载评论...