【问题标题】:Randomly slow page loading随机缓慢的页面加载
【发布时间】:2012-11-23 16:09:24
【问题描述】:

要解释真正的问题并不容易,但我会尝试 ;-)。

这是一些数据:

  • 带有 IIS7(非 RC2)的 Microsoft 服务器
  • 3GB 内存
  • 只有这个应用在这个服务器上
  • SQL 2008 速成版
  • 存储库模式
  • SimpleInjector
  • MVCSitemapProvider

现在解决问题。这不是启动,因为该站点在 2 秒内加载。应用程序池回收后。启动后,页面在 200 毫秒或更短(或更长)内加载,但有时(我不能说何时,因为它是随机的,而不是在回收之后)它们需要长达 2 分钟或更长时间。

我试图通过一瞥来找出问题所在。它显示如下:

  • ASP.NET 开始请求:121456 毫秒(这是随机的)
  • 过滤器:2ms
  • 控制器:26 毫秒
  • 查看次数:298 毫秒
  • ASP.NET 结束请求:0 毫秒

这就像一个请求堆叠,我不知道。

编辑:

所以我已经删除了整个 MVC SiteMap Provider,但幻影性能问题仍然存在。

然后我检查了 IIS 配置并注意到 AppPool 是一个 NetworkService 而不是 ApplicationPoolIdentity(其他 MVC 解决方案在 ApplicationPoolIdentity 上运行),现在它似乎比以前更快(页面加载

【问题讨论】:

  • 可能是一个愚蠢的问题,但是 MVC3 在服务器上是最新的吗?我遇到了一个问题,我的 MVC3 不是最新版本,而我的 webapp 也发生了类似的事情——它只是停止提供某些资源并读取某些路由值。如果你在开发环境中运行足够长的时间,你能重现这个吗?
  • 我不能说它是否真的是最新的。我的公司还有其他产品 MVC3 应用程序(在 RC2 服务器上),它们工作得非常完美。不幸的是,我无法用 VS12 重现这一点。

标签: .net sql-server asp.net-mvc-3 performance


【解决方案1】:

我在一个 MVC3 项目中遇到了一个非常相似的问题,该项目的架构与您在上面描述的有些相似。我们的问题原来与 MVSitemapProvider 相关。我会查找关于具体问题的注释,但我们发现如果我们禁用创建菜单的站点地图,就像测试一样,一切都快如闪电,然后当我们重新打开它时它会变慢。

我建议将其作为调试问题的下一步。

好的,我与该项目的一位同事交谈过,我现在想起来了。有几个问题。首先,MVC Sitemap Provider 吞下了它所有的异常;这并不完全是坏事,但确实使故障排除变得困难。我们发现了两种不同的情况,它们导致了两个略有不同的问题,都导致了减速。首先,我确实假设在您的 _Layout.cshtml 或任何布局文件中,您正在调用提供程序以生成您的菜单,也许还有面包屑。

  1. 如果您有一个未在站点地图中定义的控制器操作,那么无论何时您转到该页面,生成菜单和面包屑的尝试都会在异常之后引发异常,而您永远看不到它们;这是非常昂贵的,并且会减慢页面速度。
  2. 如果站点地图中定义的节点指向拼写错误或根本不存在的控制器操作,则站点地图每次尝试呈现菜单和/或面包屑时,都会抛出并吞下许多异常, 对于每一页。

由于我们在站点地图中遇到的这两个问题和其他问题,我真的建议您仔细检查站点地图文件并确保您在其中代表所有控制器操作,并且您没有错误定义任何节点。如果您不能完全确定,您甚至可能想在站点地图代码中放置一些断点并单步执行它以查看它是否为您抛出异常,然后从那里向后追溯。

【讨论】:

  • 感谢您的提示。我会删除它并希望问题消失...但是很难检查,因为它是随机的:-)...
  • @DonMerdino 我添加了更多细节。我真的希望这对您有所帮助,我知道幻像性能问题可能是最令人沮丧的故障排除之一。
  • 感谢您的提示!似乎 MVC SiteMap Provider 不是这里的问题。我在第一篇文章中添加了更多细节。
猜你喜欢
  • 2013-12-14
  • 2015-03-15
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
相关资源
最近更新 更多