CPU、RAM 和 I/O 密集型代码在 Azure Functions 上运行缓慢

Ano*_*yne 8 performance azure azure-functions

我们有一些相当占用 CPU、RAM 和 I/O 的代码(它会创建大量临时文件、解压缩、调整大小和压缩图像)。我们正在尝试将其集成到“无服务器”Web 应用程序中,并且在我们在 Azure Functions 上对其进行测试时,我们的代码仅在 Windows 上运行。

我们观察到,我们的代码在 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
Run Code Online (Sandbox Code Playgroud)

我们还发现,在“消耗”计划中,时间差异很大 - 一项特定工作给我们的时间在 112 到 153 秒之间变化。S3“应用服务”计划中的相同作业耗时 117 到 119 秒,在我的工作站上耗时约 31 秒。

P3 上的时间与 S3 相似,这与我的预期差不多,因为 CPU 和 RAM 规格相同。

所以我真的有几个问题:

  1. 我们可以做些什么来分析在 Azure 上运行的应用程序,以确定瓶颈可能在哪里?
  2. 尝试在 Azure Functions 上运行如此繁重的工作负载,我们疯了吗?
  3. 有没有人对我们如何让我们的代码在更强大的硬件上运行而不承担管理虚拟机群的所有复杂性有任何建议?

Mik*_*kov 1

  1. 您可以远程分析App Service应用程序(包括Function App),请参阅此链接。我用过 Kudu,效果很好。

  2. 确实取决于您的目标。您引用的时间对于某些应用程序来说可能非常合适。

  3. 对于SO来说,这似乎是一个太宽泛的问题。

一种更像 FunctionApp 的方法是尝试将长时间运行的函数分解为更小的短期运行函数,从而分解并可能并行化处理。