Cokoli, co spouští rekompilaci (změna web.config, app_offline.htm, změna souboru .aspx, atd.), způsobí maximální využití CPU na jádře. Pokud proces zopakujete, maximalizuje využití CPU na dalším jádře, dokud nebude celkové využití CPU na 100 %.
Připojil jsem windbg s rozšířeními sos a vypadá to, že pro každé vytížené jádro je 1 vlákno zaseknuté v System.AppDomain.Unload(System.AppDomain) a další na Oracle.DataAccess.Client.OracleTuningAgent.DoScan().
První vlákno
- Oracle.DataAccess.Client.OracleTuningAgent.DoScan()
- Oracle.DataAccess.Client.OracleTuningAgent.TuningFunction()
- System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
- System.Threading.ThreadHelper.ThreadStart()
Druhé vlákno
- System.AppDomain.Unload(System.AppDomain)
- System.Web.HttpRuntime.ReleaseResourcesAndUnloadAppDomain(System.Object)
- System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
- System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(System.Threading. _ThreadPoolWaitCallback)
- System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(System.Object)
Vypadá to, že AppDomain.Unload čeká na dokončení OracleTuningAgent.DoScan, ale toto vlákno je blokováno nebo spí.
Oracle potvrdil problém (chyba č. 9648040) a je to nejvyšší priorita. Mezitím jsou možná řešení:
- Vraťte se k 11gR1/staršímu klientovi
- Přidejte do připojovacího řetězce 'Self Tuning=false'. Samozřejmě přijdete o výhody automatického ladění.
-Scott