sql >> データベース >  >> RDS >> Oracle

Oracleデータプロバイダーは、Webサイトが停止したときにIISワーカープロセスをペグします

    再コンパイルをトリガーするもの(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)を確認しており、これが最優先事項です。それまでの間、考えられる回避策は次のとおりです。

    1. 11gR1/以前のクライアントにロールバック
    2. 接続文字列に「SelfTuning=false」を追加します。もちろん、自動チューニングのメリットは失われます。

    -スコット



    1. データモデリングの調査(賢明なデータベースを一緒に混乱させる方法)

    2. OracleSQLはデータ内の文字¡を検索します

    3. mysqlに複数の行を挿入します(コンマで区切られた項目)

    4. SQLランクパーセンタイル