2010-05-06 2 views
11

Wir erleben ein unangenehmes Problem in Oracle 11g Release 2, wo der w3wp-Prozess übernimmt und den gesamten Prozessorkern und Debugging zeigt, dass der Oracle-Datenanbieter ThreadAbortExceptions unendlich wirft . Ein Entwickler hat dieses Problem folgendermaßen gefunden:Oracle Datenprovider pegs IIS Arbeitsprozess, wenn Website gestoppt wird

1) Durchsuchen Sie eine Website, die Oracle-Datenverbindungen lokal verwendet (http://localhost/OracleWebSite - wir verwenden IIS, nicht den ASP.NET-Server für alle unsere Websites). Dadurch wird sichergestellt, dass der w3wp-Prozess ausgeführt wird und ein aktiver Oracle-Pool von Verbindungen im App-Pool vorhanden ist.

2) Stoppen Sie die Website (oder führen Sie in Visual Studio auf der betreffenden Website einen Rebuild-All-Vorgang durch).

Unsere Oracle-Verbindung in den betroffenen Anwendungen (alle Oracle Web-Anwendungen) ist gut etabliert und robust. Dieses Problem tritt nicht auf, wenn wir das Verbindungspooling deaktivieren. Dieses Problem tritt in Oracle 11g Release 1 nicht auf.

Antwort

8

Dies wurde behoben. Das Update wurde in Oracle 11.2.0.1.2 veröffentlicht, das auf der Website von Oracle verfügbar ist.

Leider ist das Update derzeit nur über ein Konto "My Oracle Support" verfügbar.

Dies hat in 11.2.0.2 und in Patch-9.966.926 ORACLE 11G 11.2.0.1 PATCH 5 BUG für Windows (64-Bit-AMD64 und Intel EM64T) festgesetzt worden.

Oder Abhilfe: Ist Selbstoptimierung durch Hinzufügen von "Self Tuning = False" zu der Verbindungszeichenfolge zu deaktivieren.

+0

Ich glaube nicht, dass es in der von Ihnen aufgelisteten Version behoben wurde. Ich glaube, es wurde in der Version 11.2.0.1.2 behoben. –

+0

Danke Bill, behoben. –

14

Alles, was eine Neukompilierung auslöst (web.config change, app_offline.htm, .aspx Datei ändern, etc.) bewirkt, dass die CPU-Auslastung im Kern maximal ist. Wenn Sie den Prozess wiederholen, wird die CPU-Auslastung für den nächsten Kern maximiert, bis die CPU-Auslastung insgesamt bei 100% liegt.

Ich habe Windbg mit SOS-Erweiterungen angeschlossen und es sieht so aus, als ob für jeden ausgelasteten Kern 1 Thread in System.AppDomain.Unload (System.AppDomain) hängen bleibt und ein anderer auf Oracle.DataAccess.Client.OracleTuningAgent.DoScan ().

ersten Thread

  • 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()

zweites Gewinde

  • 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)

Es sieht aus wie AppDomain.Unload auf OracleTuningAgent.DoScan warten zu beenden, aber dieser Thread blockiert ist oder schläft.

Oracle hat das Problem (Fehler # 9648040) bestätigt und es hat oberste Priorität. In der Zwischenzeit sind die möglichen Lösungen:

  1. Rollback zu 11gR1/früher Client
  2. Add 'Self Tuning = false' an die Verbindungszeichenfolge.Sie werden natürlich die Vorteile der automatischen Abstimmung verlieren.

-Scott

+0

Prost Scott, das löste mein Problem, wenn auch ein etwas anderes. Grundsätzlich versagten meine Unit Test Runner ansonsten gute Tests, da sie ihre Appdomain nicht entladen konnten. Hoffe, dass Oracle bald eine Lösung veröffentlicht. – stephenl

Verwandte Themen