ASP.NET MVC 5加载时间非常缓慢

3

我正在运行托管在 Azure 上的 ASP.NET MVC 5,像许多人一样在首次请求时遇到了减速问题。在我的本地 IIS 上甚至需要 10 分钟。在使用 VS 的本地 IIS Express 上大约需要 1 分钟。发布到 Azure 并查看第一页需要大约 2 分钟,然后从此之后每个页面需要大约 30 秒。当然,一旦页面第一次加载完成,其他请求就很快了。

所以这些是我尝试更改的事情,看看是否可以在我的本地 IIS 上解决问题,因为我正在尝试在那个上面进行测试。

  1. 将编译调试设置为 false
  2. 预编译并没有起作用
  3. 预编译并合并到一个程序集中也没有起作用
  4. 尝试添加一个空视图和一个返回该视图的控制器,仍然很慢
  5. 同时还在针对相同的 DAL 和业务层运行 API,并且它不会加载缓慢(大约需要 15 秒来第一次加载)。这意味着这不是 DB 模型的问题,因为它使用的是相同的代码。

有什么想法可以调试并查看为什么第一次加载如此缓慢吗?其他请求然后就很快了。

运行的 IIS 版本为 10。

谢谢


我不这么认为 :(,因为每次我第一次打开任何页面时都会发生这种情况。也许我没有表达清楚。 - Mark Farrugia
@Artak的评论值得你更深入地探究。无论你第一次查看哪个页面,因为应用程序启动时执行的内容在任何情况下都会运行(不考虑正在请求的任何页面)。 - EdSF
此外,您的数据库加载需要 15 秒(初始)时间,这是非常慢的 - 这肯定也有问题。 - EdSF
@edsf 当我说10到15秒时,我并没有指任何数据库调用,因为如果我进行需要15秒的数据库调用,那就太多了。我所指的只是加载Asp.net自动生成的API调用帮助页面,因此在任何情况下都不会有数据库调用。 - Mark Farrugia
很抱歉,我无法为你猜测。我只能说“15秒”启动时间非常慢,所以上面的评论都表明有些异常。我的依据是什么?我自己使用的是Azure MVC5(还有WebAPI,虽然这并不重要),没有什么特别的。如果存在“冷启动”延迟,大约在2-3秒左右(如果有的话)。 - EdSF
显示剩余4条评论
1个回答

0
考虑尝试使用应用程序初始化来预热您想要的页面。有关更多详细信息,请参阅应用程序初始化如何在部署时激活 Azure Web 应用程序交换期间进行预热
如果应用程序初始化仍然无法正常工作,您可以尝试启用失败请求跟踪。FREB 日志包含请求的整个生命周期及其执行时间。它有助于帮助您调查哪个部分需要更长时间。示例图片:enter image description here 请参阅此处了解如何使用 FREB 日志进行故障排除。
如果仍然没有运气,恐怕您需要向 Microsoft 支持团队寻求帮助。

非常感谢这个信息。我已经和微软交流过了。他们提出了使用部署插槽的解决方案,但这不是百分之百正确的方法,因为您需要消耗服务器资源来托管第二个应用程序。我的做法是在一个独立的服务器上进行类似的操作,然后使用流量管理器来管理重定向。我非常确信Azure IIS上安装了应用初始化功能。 - Mark Farrugia

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