Azure 持久功能保持执行

Azure 持久功能保持执行,azure,azure-functions,azure-durable-functions,Azure,Azure Functions,Azure Durable Functions,我有一个持久的函数,它看起来不会崩溃,但在第一次调用后,它会继续执行相同的函数。在第一次调用之后,尝试设置断点没有任何效果 [30/11/2017 16:16:21] Function started (Id=972ee93c-ab61-4834-937c-207e8953821d) [30/11/2017 16:16:21] Executing 'CompileFeatureObservations' (Reason='', Id=972ee93c-ab61-4834-937c-207e895

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

[30/11/2017 16:16:21] Function started (Id=972ee93c-ab61-4834-937c-207e8953821d) [30/11/2017 16:16:21] Executing 'CompileFeatureObservations' (Reason='', Id=972ee93c-ab61-4834-937c-207e8953821d) [30/11/2017 16:16:21] Starting Feature Compilation. [30/11/2017 16:16:21] Function completed (Success, Id=972ee93c-ab61-4834-937c-207e8953821d, Duration=58ms) [30/11/2017 16:16:21] Executed 'CompileFeatureObservations' (Succeeded, Id=972ee93c-ab61-4834-937c-207e8953821d) [30/11/2017 16:16:21] b540b650019244719a7f3a61e45735f4: Function 'CompileFeatureObservations (Activity)', version '' completed. ContinuedAsNew: False. IsReplay: False. Output: (62123 bytes). State: Completed. HubName: DurableFunctionsHub. AppName: . SlotName: . ExtensionVersion: 1.0.0.0. [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)”,版本“”已完成。新:错。以色列广播公司:错。输出:(62123字节)。国家:已完成。轮毂名称:DurableFunctionsHub。应用程序名:。SlotName:。扩展版本:1.0.0.0。 我能看到的唯一影响因素似乎是请求负载的大小,尽管它低于65kb的限制

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

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

我正在使用消费计划

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


有人对进一步的故障排除有什么建议吗?

我很有信心,问题在于函数的输出太大,这是这里提到的一个已知问题:

这里误导的是以下日志声明:

[30/11/2017 16:16:21] b540b650019244719a7f3a61e45735f4: Function 'CompileFeatureObservations (Activity)', version '' completed. ContinuedAsNew: False. IsReplay: False. Output: (62123 bytes). State: Completed.
它声称输出约为60KB,但此处报告的数字实际上不正确,因为它采用UTF-8编码。实际上,Azure存储使用UTF-32编码,因此实际大小可能远大于此。我会记下这件事需要解决。在beta2更新中,我们将正确报告此情况并引发异常。之后,我们将支持任意大的返回值


为了回答你问题的其他部分,扇出的程度不是问题。这仅仅是您返回值的大小。如果您可以缩小这个范围,那么应该可以解决您的问题。

我很有信心,问题在于函数的大输出,这是这里提到的一个已知问题:

这里误导的是以下日志声明:

[30/11/2017 16:16:21] b540b650019244719a7f3a61e45735f4: Function 'CompileFeatureObservations (Activity)', version '' completed. ContinuedAsNew: False. IsReplay: False. Output: (62123 bytes). State: Completed.
它声称输出约为60KB,但此处报告的数字实际上不正确,因为它采用UTF-8编码。实际上,Azure存储使用UTF-32编码,因此实际大小可能远大于此。我会记下这件事需要解决。在beta2更新中,我们将正确报告此情况并引发异常。之后,我们将支持任意大的返回值


为了回答你问题的其他部分,扇出的程度不是问题。这仅仅是您返回值的大小。如果您可以缩小此范围,那么应该可以解决您的问题。

您应该共享您的代码我没有权限。它正在运行类似于map/reduce的计算。调试期间,无错误和try/catch块未捕获异常。我肯定认为它与扇出行动的数量有关。你应该分享你的代码。我没有权限。它正在运行类似于map/reduce的计算。调试期间,无错误和try/catch块未捕获异常。我肯定认为这与分散行动的数量有关。啊,这就解释了为什么我的输入负载也被报告为太大,即使它也低于60KB。因此我认为这里的方法是将我的
CompileFeatureObservations
函数的结果保存到documentdb,然后在我的orchestrator中检索,但看起来您不允许在orchestrator中这样做。因此不确定如何计算扇出并从orchestrator启动。简而言之,如何传递大型ish有效负载。我们正在研究大型消息支持()。在此之前,您需要重构您的编排。一种选择是使用子业务流程进行较小和/或嵌套的扇出/扇入。如果需要传递大型ish有效负载,还可以使用blob存储绑定将数据保存到blob存储中,并传递URL。啊,这就解释了为什么我的输入负载也被报告为太大,即使它也低于60KB。因此我认为这里的方法是将我的
CompileFeatureObservations
函数的结果保存到documentdb,然后在我的orchestrator中检索,但看起来您不允许在orchestrator中这样做。因此不确定如何计算扇出并从orchestrator启动。简而言之,如何传递大型ish有效负载。我们正在研究大型消息支持()。在此之前,您需要重构您的编排。一种选择是使用子业务流程进行较小和/或嵌套的扇出/扇入。如果需要传递大型ish有效负载,还可以使用blob存储绑定将数据保存到blob存储中,并传递URL。