azure - Azure Functions 中令人费解的存储事务

标签 azure .net-core azure-functions azure-functions-runtime

我有一个项目,其中有几个按计划运行的基于 .NET Core 的 Azure Functions。其中一个每 10 分钟运行一次,用于更新 View 计数,类似于 SO 跟踪问题 View 的方式,另一个则每周发送一次电子邮件。这些功能运行良好一年左右。我最近将它们更新为使用 Azure Functions SDK v3 和 Azure Functions 运行时 v3 以及 .NET Core 3.1(基本上从 .NET Core 2.1 迁移到 .NET Core 3.1,因此我需要更新函数运行时)。

有一次我收到了一张比平常高得多的账单。事实证明,共享相同底层存储帐户的函数开始对存储进行大量 API 事务。每 5 分钟就有数千次。通常,每次运行都会生成大约 100 个存储事务(可能是检索函数文件?),但在某些时候事务会急剧增加。重新启动功能后,交易会降至正常,并且几天内一切正常,然后它们再次跳跃并保持高位,直到重新启动。

功能代码没有改变,仅升级了SDK和运行时。该函数代码通过SDK提供的记录器进行恒定数量的日志写入(例如7次),并且不以任何其他方式与存储交互。

我有两个相同的环境,一个用于测试,一个用于生产,并且都有相同的问题。该功能发生故障所需的时间间隔是几天,但每次似乎都不同。但是,如果我同时重新启动测试和生产,下一个峰值将在两个环境中同时发生,因此存在确定性。

根据我通过 Metrics 工具的调查,违规交易类型是 Create、Close 和 ChangeNotify,以及一些 Cancel(但少于其他)。该存储不用于任何其他用途(事实上,它的存在只是因为 Azure Functions 需要后备存储来存储其文件或其他内容)

这是相关的触发代码

[FunctionName("ViewCountUpdater")]
public static async Task RunAsync([TimerTrigger("0 */10 * * * *"/*, RunOnStartup = true*/)]TimerInfo timer, ILogger log, ExecutionContext context)

我相信我遇到了 Azure Functions 运行时或 Azure Functions .NET Core SDK 的错误。有没有人经历过这个或知道如何解决它?

最佳答案

您是否启用了AzureWebJobsDashboard?如果是,您应该禁用它(从应用程序设置中删除连接字符串)并切换到应用程序洞察。已知此设置会导致意外写入存储,而无法正确解释。

https://github.com/Azure/Azure-Functions/issues/832

关于azure - Azure Functions 中令人费解的存储事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60114152/

相关文章:

c# - 实现 dotnet core Web api 的最佳实践,并可选择在云中使用水平缩放

.net - 使用 Visual Studio 2017 的 Azure Function 项目的 NuGet 包还原失败

azure - 具有横向扩展/多个实例的 Application Insights 自定义指标 : how do I combine or disambiguate across instances?

Azure Devops 捕获触发管道的用户`

.net - .NET Core 2.0 有 SFTP 客户端吗?

asp.net-core - 仅在 Windows PC 上无法在 ASP.NET Core 上加载文件或程序集 'Microsoft.AspNetCore.Connections.Abstractions'

azure - "Publishing failed"尝试发布 Azure Function 时出现通用、非描述性错误消息

从源代码管理部署时的 Azure Function 'Error: The function runtime is unable to start'

asp.net - 我可以在模拟器之外使用 Azure 内存缓存(主要用于开发目的)吗?

c# - 如何在asp中每天运行cron作业。网络核心应用?