我正在构建一个由队列消息触发的函数应用程序,从Blob存储中读取一些输入文件,组合它们,并将新文件写入Blob存储。
每次运行该函数时,我都会看到大量的文件事务导致意外的开销。成本与“文件读/写/协议操作单元”相关。
该函数有一个队列触发器绑定、三个指向blob存储的输入绑定和一个指向blob存储的输出绑定
App函数在Python上运行(我知道这是实验性的)
当查看我的存储帐户的指标时,我发现每次我运行我的函数时,都会有50k文件事务的峰值。使用队列消息触发的空函数进行测试,我也得到了5k个文件事务。通常,函数将输出写入输出绑定位置(对于Python函数,它是函数App存储上的一个临时文件,然后将其复制回Blob存储,我假设)
在此related question中,存储的高成本被怀疑与日志记录有关。在我的例子中,hosts.json文件中没有启用日志记录,并且我还禁用了存储帐户上的日志记录。这并没有解决问题。(Expensive use of storage account from Azure Functions)
对于60KB的输出文件和大约2MB的输入文件,这些值是否正常?这是否与Python实现有关,还是所有语言都应该如此?我能避免这种情况吗?
发布于 2018-08-08 06:24:47
V1函数中的python实现效率低下,可能导致大量文件使用。这是一个众所周知的缺点。有一个python函数V2实现的工作正在进行中,它不会有这个问题。
https://stackoverflow.com/questions/51731198
复制相似问题