我有一个相当简单的 Azure Function App,具有 3 个函数(2 个 HTTP 绑定(bind),1 个每 5 分钟运行一次的心跳类型函数)。
当试图弄清楚为什么这个特定的功能应用程序比我们的其他项目造成更高的成本时,我发现这些成本几乎完全是由文件存储创建/写入事务引起的存储成本造成的。
看起来大约每小时都会出现约 5-8k 文件存储事务的峰值。该函数应用程序的使用率相当低,因此我不确定将文件事务中的峰值归因于什么。
- Azure Functions 运行时:v2
- 语言:javascript
- 部署槽位:1(证书)
- 应用服务计划:消耗
- 区域:美国西部 2
azure-storage
软件包版本:2.10.3- 部署方法:使用 Azure Portal (kudu) 连接到 GitHub 存储库
之前我看到交易量激增超过 10,000 笔。这是生产插槽和辅助部署插槽都配置为使用相同存储帐户的情况。此后,我为“cert”部署槽创建了一个单独的存储帐户,该帐户现在每小时出现类似的峰值。
我尝试过的:
- 删除了
AzureWebJobsDashboard
应用设置连接字符串,因为我们正在使用应用程序见解(根据我在另一个类似问题上发现的评论)。 - 将“cert”部署槽更改为使用与主部署槽不同的单独存储帐户,这样它们就不会互相干扰。
- 重新启动功能应用。
这种使用行为是预期的行为吗?在这种情况下,与我们拥有的其他函数应用程序相比,我们的存储成本要高得多 - 尽管大多数其他函数应用程序都是用 C# 编写的。
这并不是一大笔钱,但令人惊讶的是 Azure Functions 只收取几分钱,而文件交易每月要花费几美元。
最佳答案
Azure Function 的成本由两部分组成,一是 Function 的成本,二是 App Insights 的成本。
根据你的描述,这个函数不常用,并且你把AzureWebJobsDashboard
去掉了,那么我们可以排除两种情况,这不会是Function内部Storage的操作成本,也不是Insights造成的成本。
基于以上两点,我怀疑如此巨大的存储成本来自于部署阶段。当您的项目部署时,整个项目信息将传递到文件存储,并且此部署操作已执行多次。这应该就是这个费用的原因。
关于azure - 与 Azure Function 一起使用的存储帐户上的文件 IO 事件较高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827281/