我们有一个使用 Entity Framework 4.0 的 ASP.NET MVC4 应用程序。当我们在生产服务器上部署时,CPU 会在一段时间(~2-5h)后上升,直到接近 100%。内存也随之上升,直到最大值。一段时间后,由于内存过高,应用程序池将自动重置。
服务器:Windows 2008 R2 Standard SP1 IIS:7 (V 7.5.7600.16385) 只有一个应用程序池和一个 Web 应用程序正在运行。
来自消耗大部分 CPU 的线程的调试诊断工具的堆栈跟踪:
SNIReadSyncOverAsync(SNI_ConnWrapper*, SNI_Packet**, Int32)
.SNIReadSyncOverAsync(SNI_ConnWrapper*, SNI_Packet**, Int32)
System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus ByRef)
System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus ByRef)
ntdll!NtWaitForSingleObject
KERNELBASE!WaitForSingleObjectEx
System_Data!SNIReadSyncOverAsync
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_ni!load_config_used
System_Data_Entity_ni
System_Data_Entity_ni
System_Data_Entity_ni
System_Data_Entity_ni
System_Core_ni
System_Core_ni
0x000007fe`99223112
0x000007fe`99222a88
0x000007fe`99222899
0x000007fe`992205cb
0x000007fe`99355596
System_Web_Mvc_ni+138058
System_Web_Mvc_ni+13ca67
System_Web_Mvc_ni+13e71c
System_Web_Mvc_ni+13ca03
System_Web_Mvc_ni+13d175
System_Web_Mvc_ni+13cbe9
System_Web_Mvc_ni+1431df
System_Web_Mvc_ni+13dade
System_Web_Mvc_ni+14f5fe
System_Web_Mvc_ni+13b0ef
System_Web_Mvc_ni+14f514
System_Web_ni
System_Web_ni
System_Web_ni
System_Web_ni
System_Web_ni
System_Web_ni
System_Web_ni
System_Web_ni
clr!UMThunkStub
webengine4!W3_MGD_HANDLER::ProcessNotification
webengine4!W3_MGD_HANDLER::DoWork
webengine4!RequestDoWork
webengine4!CMgdEngHttpModule::OnExecuteRequestHandler
iiscore!NOTIFICATION_CONTEXT::RequestDoWork
iiscore!NOTIFICATION_CONTEXT::CallModulesInternal
iiscore!NOTIFICATION_CONTEXT::CallModules
iiscore!W3_CONTEXT::DoWork
iiscore!W3_CONTEXT::IndicateCompletion
webengine4!MgdIndicateCompletion
System_Web_ni
System_Web_ni
System_Web_ni
System_Web_ni
clr!UM2MThunk_WrapperHelper
clr!UM2MThunk_Wrapper
clr!Thread::DoADCallBack
clr!UM2MDoADCallBack
clr!UMThunkStub
webengine4!W3_MGD_HANDLER::ProcessNotification
webengine4!ProcessNotificationCallback
clr!UnManagedPerAppDomainTPCount::DispatchWorkItem
clr!ThreadpoolMgr::ExecuteWorkRequest
clr!ThreadpoolMgr::WorkerThreadStart
clr!Thread::intermediateThreadProc
kernel32!BaseThreadInitThunk
ntdll!RtlUserThreadStart
你知道这个CPU上升的原因是什么吗?