Azure Web 应用程序的负载缓慢且不热(30 秒以上的负载)

Posted

技术标签:

【中文标题】Azure Web 应用程序的负载缓慢且不热(30 秒以上的负载)【英文标题】:Azure web app have slow and unwarm loads (30s+ load) 【发布时间】:2016-05-26 04:30:22 【问题描述】:

我对 Azure Webapp 有一个非常大的问题,想听听建议。

我们的经历:

当我访问我们的网站时,速度非常快。平均负载约为 1 秒,并按预期响应。

但是,一旦公关。 10-20 分钟,我们得到一个非常冷的负载 - 它是 30-60 秒+。

如果网站没有访问者并且天气很冷,这将是有意义的,但我们在网站上的所有工作时间都有 10 多个访问者在线,每分钟至少有 3-5 个请求。

这种额外的负载当然是完全不能接受的。

有什么想法吗?

我们的设置:

我们有两个天蓝色的网络应用程序。一种用于生产,一种用于开发。

生产是“STANDARD SMALL”,当 CPU 达到 65-85% 时自动缩放。

我们的数据库是 10 GB 的 S2。

这是一个非常简单的标准 ASP.NET MVC 站点,包含一些文本、表单和一些远程连接。

唯一的“非标准”是查看数据库的 300 万个索引页面(页面加载时间约为 1 秒)。这会收到很多来自谷歌的访问者。我们还收到了一些来自 Google 的抓取信息,因为我们有一个包含 3mio+ 页面的站点地图。

来自监视器的数据:

编辑:来自新监视器的数据。

网络应用:

数据库:

配置:

生产网络应用:

数据库:

我们的尝试:

1:始终开启。

我们已多次尝试始终打开,但在最初的 30 分钟到 6 小时内,网站突然出现故障,再也没有恢复**。这当然是个大问题,不是解决办法。

2:在虚拟机上运行。

我们在 Azure(4gb RAM)上的 VM 上进行了非常稳定和精细的设置,运行良好。我们的反应很慢,但效果不错。但是,我们想使用 Web 应用程序将扩展和平台“外包”给 Azure - 我们无法接受这样的速度:)

**

它永远没有响应,直到超时。我尝试了两种情况:一种是停止和启动网络应用程序起作用,另一种是我必须重新部署

【问题讨论】:

当您打开“始终在线”时,网站如何关闭?当您说它不会恢复时,您的意思是您必须进行全面部署才能使您的网站重新启动? @juvchan 感谢您提出这个问题。它永远没有响应,直到超时。我尝试了两种情况:一种是停止和启动网络应用程序起作用,另一种是我必须重新部署。 你的经历非常有趣,值得学习。 您是否通过更改监控 Azure SQL 实例并检查连接(这可以在门户上完成)? S2 的最大值为 120 concurrent connections,如果您经常达到该最大值,则所有其他连接尝试都将超时。 @LarsHoldgaard 我想知道它是否是 DTU,因为如果你达到 100% DTU,对数据库的所有其他请求要么被拒绝要么超时,也许那是你遇到缓慢的时候网站上的回应。与缩放无关:) 【参考方案1】:

我找到了解决办法。

解决方案不只是在一个地方,而是在多个地方。

让我尝试一下。

主要挑战是我们已编制索引的 300 万页。 Google 每天抓取 50-150k 个页面,我们可以在 Google 网站管理员工具中看到:

这些页面中有 99.9% 是唯一类型的地址页面。我深入研究了这些,发现默认情况下需要 1.5-2 秒(!)。跑到测试时它甚至很慢。

第 1 步是创建一个新索引并优化代码。那里的性能提高了 5 倍。

现在,这本身并不能解决问题。我还将两个数据库都升级到了新的 S3... 没有完全解决问题(但仍然更好)。

我还将我们的 Azure Web 应用程序升级到了 7gb 版本 - 然后事情就开始执行了。

但是,我们仍然每 30 分钟就会遇到一个小问题。我进入我们的虚拟机,发现了一个旧的控制台作业,它使一些内容井井有条....我暂停了该作业。

这些发现都不能单独存在 - 但在所有这些都得到修复之后 - 我们又好了,网站的响应也可以接受!

万岁!

【讨论】:

【参考方案2】:

为了帮助进一步找出瓶颈所在,您能否使用位于 http:portal.azure.com 的新 Ibiza 门户。

旧版门户(如上图所示)显示的是 54 分钟的平均值。显然,对于 5 分钟的平均值和大约 80% 的 DTU,可能会出现所有 DTU 都被消耗的时期,这可能是瓶颈。

使用新门户,这些 DTU 图表是 15 秒的平均值,这种更精细的粒度可能指向瓶颈。您可以切换到新门户并粘贴更多图表吗?

谢谢你

【讨论】:

感谢您的回答 - 大多数时候它似乎平均保持在 50% 左右,但在 80-90% 上几乎没有峰值。我认为一个合理的测试是将数据库升级到 2x DTU - 我会这样做。但是,在我看来,所有指标似乎都是合理的。我在想:这可能是DNS问题吗?当我也转到没有数据库或数据库非常有限的静态页面时,我遇到了问题。

以上是关于Azure Web 应用程序的负载缓慢且不热(30 秒以上的负载)的主要内容,如果未能解决你的问题,请参考以下文章

应用自定义域后,Azure 上的 Web 应用加载缓慢

5.Azure负载均衡(上)

5.Azure负载均衡(上)

在 Azure SQL 上运行非常缓慢的外部表上选择

Azure Load Balancer 为我们的Web项目提供负载均衡

Azure Linux VM配置负载平衡后无法连接