我目前正在调查我们的web应用程序(MVC2、S#arp架构、fluent nHibernate)的性能问题,使用MVC-mini-profiler非常棒。我正在对我想要调查的动作或控制器使用属性,就像这篇文章Getting more "granularity" from the MVC Mini Profiler中讨论的那样。
我发现在OnResultExecuting和onResultExecuted之间花费了很多时间,我认为这一定是渲染视图,所以如果有复杂的逻辑从那里调用就会出现问题,但我已经在视图的各个部分进行了一些分析器调用,包括一个围绕整个母版页的调用,但是仍然有很多时间(在某些情况下大约是4-5秒)是完全未知的。
除了呈现视图之外,我不知道在OnResultExecuting之后的步骤中发生了什么,所以我甚至不知道从哪里寻找性能问题。
如有任何建议,我们将不胜感激。
发布于 2012-02-09 06:43:07
您是否正在创建视图模型,以便传递给视图以进行渲染?如果视图模型有一个集合,并且该集合是使用NHibernate上的Linq查询填充的,那么Linq查询可能是作为呈现视图的一部分来执行的。这意味着4-5秒中的一些时间可能会被数据库访问占用。通常,任何创建视图模型的代码都应该确保该视图模型中的所有集合都已完全填充,而不是尚未枚举的IQueryables。
这听起来像是可能的吗?如果是这样的话,使用NHProf可能有助于确定它。
发布于 2012-02-09 06:54:38
我最好的猜测是它提交了UnitOfWork (NHibernate中的ISession)。这可能是非常耗时的操作。
https://stackoverflow.com/questions/8986300
复制相似问题