使用Azure逻辑应用程序时为什么会出现超时?

时间:2016-06-10 07:54:26

标签: azure azure-logic-apps

我使用Azure逻辑应用的最新预览版本,我的一个主题检查邮件标题中的字符串是否与SOME_STRING匹配,如下面的代码所示

    "authenticatedresponse": {
        "conditions": [
            { 
                "expression": "@equals(coalesce(trigger().outputs?.headers?['CHECK_THIS_STRING'], ''),  'SOME_STRING')"
            }
        ],
        "inputs": {
            "statusCode": 202
        },
        "type": "Response"
    }

该主题应检查条件是否为真,然后将消息传递给服务总线。它适用于99%的情况,但有时我会收到超时异常消息{"code":"ActionResponseTimedOut","message":"The execution of template action 'authenticatedresponse' is failed: the client application timed out waiting for a response from service. This means that workflow took longer to respond than the alloted timeout value. The connection maintained between the client application and service will be closed and client application will get an HTTP status code 504 Gateway Timeout."}

正如您所看到的,这是一个非常简单的条件,因此它不需要花费大量时间来执行。有没有人知道这个问题是什么?

2 个答案:

答案 0 :(得分:0)

响应操作超时基于逻辑应用程序运行的总执行持续时间,而不仅仅是响应操作本身的执行持续时间。

因此,如果逻辑应用程序运行完成超过90秒(达到响应操作),则关闭客户端连接(假设客户端仍在等待http响应)并且响应操作失败。

答案 1 :(得分:0)

可能有多种原因。常见的是:

  1. “响应”操作之前的操作需要90秒钟以上的时间来完成
  2. 由于逻辑应用超出了5分钟内可能完成的操作数量限制(例如,在高负载下大量同时运行应用),因此该应用被限制了

对于(1),降低应用程序的复杂性,在“响应”步骤之后移动对时间敏感的动作,或将应用程序拆分为多个部分。

对于(2),current default limit是100k动作,可以在给定的5分钟内完成,此后您的应用将受到限制。您可以通过访问Azure门户的“度量”部分,选择您的应用程序,然后添加“操作限制事件”(或“触发限制事件”)来验证是否发生了这种情况。如果这是问题所在,则可以为"High Throughput Mode"(当前处于预览状态)配置应用程序,以将限制增加到300k。 Microsoft的说明对我来说无法通过ARM模板启用,但是此代码可以做到:

  "properties": {
    "state": "Enabled",
    "runtimeConfiguration": {
      "operationOptions": "OptimizedForHighThroughput"
    },...