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

时间:2017-06-06 14:05:49

标签: performance azure azure-functions

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

我们观察到,我们的代码在Azure功能上的运行速度比在本地工作站(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规格是相同的。

所以我真的有几个问题:

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

1 个答案:

答案 0 :(得分:0)

  1. 您可以远程分析App Service应用程序(包括功能应用程序),请参阅this link。我用过Kudu,效果很好。

  2. 真的取决于你的目标。对于某些应用,您所引用的时间可能非常好。

  3. 对于SO而言,这似乎是一个过于宽泛的问题。

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