为什么 Azure Function 重试机制的尝试次数超过了配置的最大尝试次数,并且不断尝试超过成功的次数?

问题描述 投票:0回答:3

我想知道为什么 Azure Function 重试机制的尝试次数超过了配置的次数 (

"maxRetryCount": 2
),并继续尝试超过成功的一次,我在 host.json 配置中设置了 2 次尝试,但我发现我检查的任何失败文档都进行了更多尝试,通常从 6 到 9。甚至更难以解释的是,我清楚地看到在成功重试之后进行了更多尝试,如下图所示 (12:20:54),并且我相信在以下情况下代码中不会引发异常“文件上传成功”

enter image description here

当我比较不同的日志条目时,它们在操作_Id、操作_ParentId 和 itemId 上有所不同,但其余部分(如 appId)相同

主机.json

{
  ...
  "retry": {
    "strategy": "fixedDelay",
    "maxRetryCount": 2,
    "delayInterval": "00:00:30"
  }
}
azure azure-functions
3个回答
1
投票

自从引入重试机制设置几天后,我就不再看到这种行为了。看起来 Azure“调整”了自身以按预期工作,我没有更改任何内容 - 代码或配置,不确定它是什么,我猜是某种故障。


0
投票

我不确定您是否有任何其他底层重试机制可能会影响 Az Func 重试策略。这是关于 Azure Functions 错误处理和重试的很好的解释。

我在回答开始时所想的是因为这个

函数应用重试策略独立于触发器提供的任何重试或弹性。函数重试策略仅位于触发弹性重试之上。例如,如果使用 Azure 服务总线,默认情况下队列的消息传递计数为 10。默认传递计数意味着在尝试传递队列消息 10 次后,服务总线将使该消息成为死信。您可以为具有服务总线触发器的函数定义重试策略,但重试将分层在服务总线交付尝试之上。


0
投票

我认为这可能是实例错误的情况,而不是重试策略本身的问题。当实例失败时,重试次数重置为0。ref

“实例有可能在重试尝试之间发生故障。当实例在重试策略期间失败时,重试计数将会丢失。”

© www.soinside.com 2019 - 2024. All rights reserved.