要解释问题究竟是什么并不容易,但我会尝试; - )。
以下是一些数据:
现在好了。它不是启动,因为该站点在2秒内加载。应用程序池回收后。启动后,页面加载时间在200毫秒或更短(或更多),但有时(我不能说什么时候,因为它是随机的,而不是在回收后),它们需要长达2分钟或更长时间。
我试着一睹这个问题。它显示如下:
这就像请求堆叠,我不知道。
修改
所以我删除了整个MVC SiteMap提供程序,但幻像性能问题仍然存在。
然后我检查了IIS配置并注意到AppPool是一个NetworkService而不是ApplicationPoolIdentity(其他MVC解决方案在ApplicationPoolIdentity上运行),现在它似乎比以前更快(页面加载< 50ms)!如果问题仍然存在,我将写在这个帖子中。
答案 0 :(得分:1)
我在一个MVC3项目上遇到了一个非常类似的问题,它的架构与你上面描述的有些相似。我们的问题与MVCSitemapProvider有关。我会找到关于具体问题的说明,但我们发现如果我们禁用SiteMap创建菜单,就像测试一样,一切都闪电般快,那么当我们重新开启它时会变慢。
我建议将其作为调试问题的下一步。
好的,我和我的一位同事谈过这个项目,我现在回想起来。有几个问题。首先,MVC Sitemap Provider吞下它的所有异常;这并不完全是坏事,但确实使得解决问题变得困难。我们发现两种不同的情况导致了两个略有不同的问题,这两种情况都导致了减速。首先,我假设在您的_Layout.cshtml或任何布局文件中,您包括调用提供程序以生成菜单以及可能还有面包屑。
由于我们对站点地图有这两个问题和其他问题,我真的建议您搜索站点地图文件并确保您在其中表示所有控制器操作,并且没有错误定义任何节点。如果您不能完全确定,您可能甚至想在站点地图代码中放置一些断点并逐步执行它以查看它是否为您抛出异常,然后从那里向后追踪。