2012-12-05 172 views
1

解释这个问题到底是什么并不容易,但我尝试着;-)。随机缓慢加载页面

这里有一些数据:

  • 微软服务器与IIS7(未RC2)
  • 3GB内存
  • 只有这个应用程序是该服务器
  • SQL 2008年快递
  • 库模式
  • SimpleInjector
  • MVCSitemapProvider

现在确定问题所在。这不是启动,因为该站点在2秒内加载。应用程序池回收后。启动后,页面在200ms或更少(或更多)的情况下加载,但有时(我不能说什么时候,因为它是随机的,它不是在回收后),它们需要2分钟或更长时间。

我试了一下发现问题。它显示这样的:

  • ASP.NET开始请求:121456ms(这是随机地)
  • 过滤:2ms的
  • 控制器:26ms
  • 查看:298ms
  • ASP.NET端请求: 0ms

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

编辑:

所以,我取出全部MVC站点地​​图提供者,但假体性能比较的问题是仍然在这里。

然后我检查了IIS配置并注意到AppPool是NetworkService而不是ApplicationPoolIdentity(其他MVC解决方案在ApplicationPoolIdentity上运行),现在看起来甚至更快(页面加载< 50ms)!如果问题仍然存在,我会写在这个线程中。

+0

可能是一个愚蠢的问题,但MVC3是最新的服务器?我遇到了一个问题,那就是我的MVC3不是最新版本,而且我的webapp发生了类似的情况 - 它停止了服务某些资源并读取某些路由值。如果你在开发环境中运行足够长的时间,你能重现吗? –

+0

我不能说它真的是最新的。我的公司还有其他产品MVC3应用程序(在RC2服务器上),它们的工作非常完美。不幸的是我不能用VS12重现这一点。 –

回答

1

我在MVC3项目上遇到了一个非常类似的问题,它的结构与上面描述的有些类似。我们的问题最终被绑定到MVCSitemapProvider。我会寻找关于具体问题的笔记,但是我们发现,如果我们禁用SiteMap创建菜单,就像测试一样,一切都很快,然后当我们重新打开它时会变得缓慢。

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

好的,我和我的一位同事谈了这个项目,我现在回想起来。有几个问题。首先,MVC站点地​​图提供程序吞下所有的异常;这并不完全糟糕,但难以解决问题。我们发现两种不同的情况导致了两个稍有不同的问题,都导致放缓。首先,我假设在你的_Layout.cshtml或其他布局文件中,你需要调用提供程序来生成你的菜单或者面包屑。

  1. 如果你有,你有没有在站点地图中定义一个控制器动作,你到那个页面的任何时间,以产生菜单和面包屑的尝试异常后抛出异常,你永远也看不到他们。这是非常昂贵的,并且降低了该页面的速度。
  2. 如果您的站点地图中定义了一个指向控制器操作的拼写错误或不存在的站点地图,每次站点地图尝试呈现菜单和/或面包屑时,它都会抛出并吞下许多例外,每一个页面。

由于这两个问题和我们在网站地图上的其他问题,我真的会推荐检查你的站点地图文件,并确保你在那里代表你的所有控制器动作,并且你没有任何节点错误地定义。如果你不能完全确定,你甚至可能想在站点地图代码中加入一些断点,并逐步查看它是否为你抛出异常,然后从那里追溯。

+0

感谢您的提示。我会删除它,并希望问题没有了......但很难检查,随机引起: - )... –

+0

@DonMerdino我添加了一些细节。我真的希望这可以帮助你,我知道幻影性能问题可能是解决问题最令人沮丧的一些问题。 –

+0

谢谢你的提示!看起来MVC SiteMap Provider在这里不是问题。我在第一篇文章中添加了更多细节。 –