【问题标题】:Durable Function Keeps Executing持久功能持续执行
【发布时间】:2018-05-17 23:47:19
【问题描述】:

我有一个持久的函数,它似乎不会崩溃,但在第一次调用后只是继续执行相同的函数。在第一次调用之后尝试设置断点没有任何效果。

[30/11/2017 16:16:21] 功能启动(Id=972ee93c-ab61-4834-937c-207e8953821d) [30/11/2017 16:16:21] 执行'CompileFeatureObservations'(原因='',Id=972ee93c-ab61-4834-937c-207e8953821d) [30/11/2017 16:16:21] 开始特征编译。 [30/11/2017 16:16:21] 功能完成(成功,Id=972ee93c-ab61-4834-937c-207e8953821d,持续时间=58ms) [30/11/2017 16:16:21] 执行“CompileFeatureObservations”(成功,Id=972ee93c-ab61-4834-937c-207e8953821d) [30/11/2017 16:16:21] b540b650019244719a7f3a61e45735f4:函数“CompileFeatureObservations(活动)”,版本“”已完成。 ContinuedAsNew:错误。 IsReplay:错误。输出:(62123 字节)。状态:已完成。集线器名称:DurableFunctionsHub。应用名称:.插槽名称:.扩展版本:1.0.0.0。

我能看到的唯一影响因素似乎是请求负载的大小,尽管它低于 65kb 的限制。

它使用文档中描述的扇出/扇入模式。当我的任务数组的大小达到 ~100 时,它似乎停止工作,然后进入无限循环。

也许我已经超出了扇出限制?有没有办法控制函数“实例”启动的数量?

我正在使用消费计划。

我能找到停止该行为的唯一方法是停止本地存储模拟器并删除并重新初始化底层 localdb。

是否有人对进一步排除故障有任何建议?

【问题讨论】:

  • 你应该分享你的代码
  • 我没有权限。它正在运行类似计算的 map/reduce。在调试期间没有错误并且 try/catch 块没有捕获异常。我绝对认为它与扇出操作的数量有关。

标签: azure azure-functions azure-durable-functions


【解决方案1】:

我很确定问题出在您的函数的大量输出上,这是此处提到的一个已知问题:https://github.com/Azure/azure-functions-durable-extension/issues/79

这里有误导性的是这个日志语句:

[30/11/2017 16:16:21] b540b650019244719a7f3a61e45735f4: Function 'CompileFeatureObservations (Activity)', version '' completed. ContinuedAsNew: False. IsReplay: False. Output: (62123 bytes). State: Completed.

它声称输出约为 60 KB,但此处报告的数字实际上是不正确的,因为它假定 UTF-8 编码。实际上,Azure 存储使用 UTF-32 编码,因此实际大小可能比这大得多。我会记下这需要修复。在 beta2 更新中,我们会正确报告这一点并抛出异常。在那之后的某个时候,我们将支持任意大的返回值。

只是回答您问题的其他部分,扇出的程度不是问题。这只是您的返回值的大小。如果你能把它缩小,那应该可以解决你的问题。

【讨论】:

  • 啊,这就解释了为什么我的输入负载也被报告为太大,即使它也低于 60KB。
  • 所以我认为去这里的方法是将CompileFeatureObservations 函数的结果保存到documentdb,然后在我的编排器中检索,但看起来你不允许在编排器中这样做。所以不确定如何计算扇出并从协调器启动。简而言之,如何传递大型有效载荷。
  • 我们正在努力支持大消息 (github.com/Azure/azure-functions-durable-extension/issues/26)。在此之前,您需要重构您的编排。一种选择是使用子编排进行较小的和/或嵌套的扇出/扇入。如果您需要传递大型负载,您还可以使用 blob 存储绑定将数据保存到 blob 存储中并传递 URL。
猜你喜欢
  • 1970-01-01
  • 2016-02-26
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多