持久功能持续执行
Durable Function Keeps Executing
我有一个持久函数,它似乎没有崩溃,但在第一次调用后只是继续执行相同的函数。在第一次尝试设置断点的调用之后无效。
[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 (Activity)',版本“”已完成。 ContinuedAsNew:错误。 IsReplay:错误。输出:(62123 字节)。状态:完成。集线器名称:DurableFunctionsHub。应用名称:.插槽名称: .扩展版本:1.0.0.0.
我能看到的唯一影响因素似乎是请求负载的大小,尽管它低于 65kb 的限制。
它正在使用文档中描述的 fan-out/fan-in 模式。当我的任务数组的大小达到 ~100 时,它似乎停止工作然后进入无限循环。
也许我超出了扇出限制?有没有办法控制函数 "instances" 启动的数量?
我正在使用消费计划。
我能找到停止该行为的唯一方法是停止本地存储模拟器并删除并重新初始化底层 localdb。
有人对进一步排查问题有什么建议吗?
我非常确定问题出在您的函数输出过大,这是此处提到的一个已知问题: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 更新中,我们将正确报告这一点并抛出异常。之后的某个时候,我们将支持任意大的 return 值。
只是回答你问题的其他部分,扇出的程度不是问题。它只是您的 return 值的大小。如果你能把它缩小,那应该可以解决你的问题。
我有一个持久函数,它似乎没有崩溃,但在第一次调用后只是继续执行相同的函数。在第一次尝试设置断点的调用之后无效。
[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 (Activity)',版本“”已完成。 ContinuedAsNew:错误。 IsReplay:错误。输出:(62123 字节)。状态:完成。集线器名称:DurableFunctionsHub。应用名称:.插槽名称: .扩展版本:1.0.0.0.
我能看到的唯一影响因素似乎是请求负载的大小,尽管它低于 65kb 的限制。
它正在使用文档中描述的 fan-out/fan-in 模式。当我的任务数组的大小达到 ~100 时,它似乎停止工作然后进入无限循环。
也许我超出了扇出限制?有没有办法控制函数 "instances" 启动的数量?
我正在使用消费计划。
我能找到停止该行为的唯一方法是停止本地存储模拟器并删除并重新初始化底层 localdb。
有人对进一步排查问题有什么建议吗?
我非常确定问题出在您的函数输出过大,这是此处提到的一个已知问题: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 更新中,我们将正确报告这一点并抛出异常。之后的某个时候,我们将支持任意大的 return 值。
只是回答你问题的其他部分,扇出的程度不是问题。它只是您的 return 值的大小。如果你能把它缩小,那应该可以解决你的问题。