C# w3wp进程上cpu峰值出现奇怪问题

C# w3wp进程上cpu峰值出现奇怪问题,c#,nhibernate,iis,activerecord,w3wp,C#,Nhibernate,Iis,Activerecord,W3wp,我有一个最奇怪的问题。。。我有一个单轨网站.NET解决方案,类似于ASP.NET MVC。。其中一页上有一个保存按钮。单击save按钮时,它会执行一些代码将对象保存到数据库,然后重定向到另一个页面。但是,它所做的是在您单击“保存”按钮后立即执行所有保存代码,然后它在那里停留一段时间,然后重定向到另一个页面并执行其代码。这里有一些关于这种情况的事实,使它特别奇怪 每次单击“保存”并等待其完成并重定向的过程中,所花的时间都比上一次尝试的时间长2-4秒。所以第一次需要2秒,然后可能是5秒,然后是8秒,

我有一个最奇怪的问题。。。我有一个单轨网站.NET解决方案,类似于ASP.NET MVC。。其中一页上有一个保存按钮。单击save按钮时,它会执行一些代码将对象保存到数据库,然后重定向到另一个页面。但是,它所做的是在您单击“保存”按钮后立即执行所有保存代码,然后它在那里停留一段时间,然后重定向到另一个页面并执行其代码。这里有一些关于这种情况的事实,使它特别奇怪

每次单击“保存”并等待其完成并重定向的过程中,所花的时间都比上一次尝试的时间长2-4秒。所以第一次需要2秒,然后可能是5秒,然后是8秒,等等。。。 如果你回收应用程序池,它会使它再次快速运行,但事实1开始起作用,你做的次数越多,它就会变得越慢。 我添加了日志记录,它在1毫秒内执行保存和重定向代码,然后等待一段时间,然后快速执行新页面的代码。 我试着将它改为重定向到google.com,但它仍然是这样。 我试着让它完全不重定向,保存后再次提供现有页面,它仍然是这样运行的。 每次单击save,它都会增加cpu,特别是w3wp进程。 其他页面甚至其他保存方法也不这样做。 注释掉保存到数据库中的代码可以使其正常工作,无需等待。 有人知道这是什么原因吗?保存代码使用活动记录和NHibernate。代码本身运行速度非常快,就像我说的,不到1ms,但似乎在代码完成执行后发生了一些异步事件,导致代码挂起很长时间


任何想法都将不胜感激,代码位于。

我的单轨车有点生锈了

您是在每次请求后处理ActiveRecord/nHibernate上下文,还是将其缓存在会话状态?您应该为每个请求创建一个新的上下文


您是否渴望加载数据实体?如果您正在保存数据,它可能会获取所有相关的实体。

我会尝试使用探查器获取更多信息。还可以尝试NHProf查看问题是否出在NHibernate上,或者至少启动NH日志并检查日志。NHProf似乎没有显示任何有用的内容。。它显示了我的update语句,然后显示了commit transaction都是超快速的,然后35秒内什么都没有,然后显示begin transaction with isolation level:未指定,然后开始选择重定向到页面上的数据。我升级了所有castle和nhibernate dll,这似乎解决了问题。非常奇怪…我没有看到任何代码会手动缓存或处理上下文,是否有这样的设置?我的数据访问类是静态的,因为它们使用ActiveRecordMediator方法,这些方法是静态的-这可能是问题吗?。对象的所有子对象都设置为延迟加载,而且我是使用Save保存的,而不是SaveAndFlush,所以我不知道为什么它会在之后获取关联的实体。即使这样做了,也不应该占用cpu时间,也不应该花费太长的时间来执行。