Azure Web应用程序速度非常慢

39

我一直在调查我们生产应用程序启动缓慢的问题,结果出乎意料。

在不同的 Azure 虚拟机上测试显示,启动时间与应用程序服务器性能密切相关(因此不包括外部请求,包括 SQL),但真正有趣的是与 Azure Web 应用程序和我的本地计算机进行比较(所有时间均为约三次运行的平均值):

VM A0:            >1m
VM A2:            13s
VM D2V2:           6.8s
VM D5V2:           7.8s
Wep App P2:       25s
Web App S2:       26.5s
My local machine:  6.6s

我的本地机器是一台3.3GHz的i5。

即使它通过互联网连接到相同的SQL Azure数据库并包括Entity Framework模型检查,本地机器也是最快的。

所有测试都使用.NET 4.6.1,这是当时发布的最新版本。

显然的结论:

  • 对于不可并行化的作业,我的四年旧的台式机比任何大小的Azure VM都要快。
  • 即使你愿意花500美元每月的费用,Azure Web应用程序也运行缓慢。

这似乎有些可疑。还有其他可能发生的事情吗?或者有什么测试可以进行吗?

在进行了一些分析后进行编辑:以下内容对我的问题没有任何启示,但这仍然是有趣的信息(在连接了分析器的另一个A2 VM上测试总共需要20秒):

  • 58%是JIT编译。
  • 文件IO阻塞几乎为零(应用程序已经启动过,所以我猜所有必需的dll部件都在内存缓存中)。
  • <1%是针对SQL Azure的请求。
  • 因此,其余90%的运行时间应该是.NET执行或分析器开销。
  • 分析器本身的开销很大,因为没有它的请求只需要15秒就可以运行(我使用了JetBrains dotTrace的试用版,我真的很喜欢)
  • 50%的时间用于第一个Entity Framework请求,其中80%是JIT编译。
  • 15%是使用SignalR的第一次使用,几乎没有JIT编译(做一些反射混乱)

几乎没有进行并行化处理。


4
虽然这句话对 OP 没有帮助,但我在搜索为什么我的 Azure Web 应用程序似乎很慢时发现了这里,结果发现我的 Web 应用程序是在与我的数据库/缓存/ Blob 等不同的位置托管的。 - James
1
新的Dv2机器速度更快,但仅支持昂贵的Premium层。请参见以下功能需求:https://feedback.azure.com/forums/169385-web-apps/suggestions/33046582-support-dv2-series-vms-in-standard-tier - Dave New
1
@John 是的,Premium v2在2017年底进入了普遍可用性。我们在CPU密集型工作负载上经历了超过2倍的性能提升。从A系列到Dv2系列是一个巨大的飞跃。 - Dave New
1
@John 你确定已将其配置为 Dv2 实例了吗?高级层提供两者。 - Dave New
1
@davenewza 现在明白了,它们确实快了两倍。谢谢。 - John
显示剩余26条评论
2个回答

5
最初我们部署我们的 Azure App Service - Web 应用程序 (托管在 Resource Group1 中) 和我们的 Azure SQL 数据库 (托管在 Resource Group2 中),这个应用程序非常慢。我的错误是 RG1 和 RG2 位于两个不同的位置。 后来,当我们将两个 RG 的位置更改为相同位置时 (重新创建它们),WebApps 开始运行流畅。
谢谢, Prawin

1

我也遇到了同样的问题,我通过将网站内容(图片和视频)移动或复制到Azure Blob Storage中来解决了这个问题。我们还可以配置 Azure CDN到WebApps、VM、Cloud Services和Custom origin。通过尝试使用Azure CDN,您的网站加载时间将得到改善。


6
不会。正如我所说,剖析结果显示该问题受 CPU 限制。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接