再コンパイルをトリガーするもの(web.configの変更、app_offline.htm、.aspxファイルの変更など)により、コアのCPU使用率が最大になります。このプロセスを繰り返すと、全体のCPU使用率が100%になるまで、次のコアのCPU使用率が最大になります。
windbgをsos拡張機能に接続しましたが、最大化されたコアごとに、System.AppDomain.Unload(System.AppDomain)に1つのスレッドがスタックし、Oracle.DataAccess.Client.OracleTuningAgent.DoScan()に別のスレッドがスタックしているようです。
最初のスレッド
- 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()
2番目のスレッド
- 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)
AppDomain.UnloadがOracleTuningAgent.DoScanの終了を待機しているようですが、そのスレッドはブロックされているか、スリープしています。
Oracleはこの問題(バグ番号9648040)を確認しており、これが最優先事項です。それまでの間、考えられる回避策は次のとおりです。
- 11gR1/以前のクライアントにロールバック
- 接続文字列に「SelfTuning=false」を追加します。もちろん、自動チューニングのメリットは失われます。
-スコット