【发布时间】:2017-09-26 14:46:42
【问题描述】:
我们有一些相当占用 CPU、RAM 和 I/O 的代码(它会创建大量临时文件、解压缩、调整大小和压缩图像)。我们正在尝试将其集成到“无服务器”Web 应用程序中,并且看到我们的代码仅在 Windows 上运行,目前我们正在 Azure Functions 上对其进行测试。
我们观察到,我们的代码在 Azure Functions 上的运行速度比在我的本地工作站(Core i7-4790、16GB RAM、SSD)上慢得多。例如,一个典型的工作负载为我们提供了以下时间:
Dev workstation: 2.47 sec
Azure Functions, "App Service" plan (S3 size): 10.59 sec
Azure Functions, "Consumption" plan: 15.96 sec
我们还发现,在“消耗”计划中,时间差异很大 - 一项特定工作给我们的时间在 112 到 153 秒之间变化。 S3“应用服务”计划中的相同作业需要 117 到 119 秒,而在我的工作站上大约需要 31 秒。
P3 的时序与 S3 相似,这与我预期的差不多,因为 CPU 和 RAM 规格相同。
所以我真的有几个问题:
- 我们可以做些什么来分析我们在 Azure 上运行的应用程序,以确定瓶颈可能在哪里?
- 尝试在 Azure Functions 上运行如此繁重的工作负载,我们疯了吗?
- 对于如何让我们的代码在功能更强大的硬件上运行,而无需承担管理虚拟机场的所有复杂性,是否有人有任何建议?
【问题讨论】:
-
你在哪里写这些文件?请注意,在消费计划中,
d:\home下的文件系统是从 Azure 文件装载的,并且 I/O 延迟非常高。您可以尝试在D:\local下的本地存储中写入,看看是否有区别。同样在消费计划中,功能应用程序被关联到 1 个核心。您应该在无服务器上横向扩展而不是向上 -
感谢您的提示!我检查过,看起来我们所有的临时文件都是在 D:\local 下创建的,所以应该没问题。我们的代码不是高度并行的,所以我不认为核心亲和力会成为问题,但我会尝试在单个核心上本地运行它,看看会发生什么。
标签: performance azure azure-functions