随机网页加载缓慢(Randomly slow page loading)

2019-10-17 11:46发布

这并不容易解释这个问题真的是什么,但我尽量;-)。

这里有一些数据:

  • 微软服务器与IIS7(未RC2)
  • 3GB内存
  • 只有这个应用程序是在此服务器上
  • SQL 2008速成
  • Repository模式
  • SimpleInjector
  • MVCSitemapProvider

好了,现在的问题。 因为该网站是在2秒加载它不启动。 之后,应用程序池回收。 启动后,页面加载在200毫秒以内(含)以上,但有时(我不能当,说因为它是随机和循环之后NOT)他们需要长达2分钟以上。

我试图窥发现问题。 它显示是这样的:

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

这就像一个要求堆放,我不知道。

编辑:

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

然后我检查IIS配置,发现该程序池是网络服务,而不是ApplicationPoolIdentity(其他MVC解决方案上运行ApplicationPoolIdentity),现在它更快的发展似乎之前(页面加载<50ms的)! 如果问题仍然存在,我会在这个线程写。

Answer 1:

我对一个MVC3项目非常类似的问题有几分相似架构,你上面描述的内容。 我们的问题竟然是绑在MVCSitemapProvider。 我会找我的笔记,以什么具体的问题是,但我们发现,如果我们停用了地图创建菜单,就像一个测试,一切快如闪电,那么当我们打开这回它会很慢。

我会建议为调试这一问题的下一个步骤。

好吧,我跟从项目我的同事之一,我现在回忆起来。 有几个问题。 首先,MVC的站点地图提供者吞下所有的例外情况; 这并不完全是坏,但确实使故障排除困难。 我们发现,造成两人稍有不同的问题,两者都能引起经济放缓两种不同的情况。 首先,我不认为你_Layout.cshtml或任何布局文件,你包括对供应商的调用生成您的菜单,也许面包屑为好。

  1. 如果你有,你有没有在站点地图中定义一个控制器动作,你到那个页面的任何时间,以产生菜单和面包屑的尝试异常后抛出异常,你永远也看不到他们。 这是非常昂贵的,并减缓该页面了。
  2. 如果你有一个指向该拼写错误或根本就不存在一个控制器的动作在你的站点地图中定义一个节点,每一次网站地图试图使菜单和/或面包屑,就抛出并吞下许多例外,对于每一个单页。

由于我们与地图这两个和其他问题,我真的建议你淘sitemap文件,并确保您代表中有你所有的控制器动作,那你没有正确定义的任何节点。 如果你不能完全肯定,你可能想要甚至把一些断点在网站地图代码,并通过它一步,看看它抛出你的异常,然后从那里向后跟踪。



文章来源: Randomly slow page loading