sql >> Base de Datos >  >> RDS >> Oracle

El proveedor de datos de Oracle vincula el proceso de trabajo de IIS cuando se detiene el sitio web

Cualquier cosa que desencadene una recompilación (cambio de web.config, app_offline.htm, cambio de archivo .aspx, etc.) hace que el uso de la CPU en el núcleo llegue al máximo. Si repite el proceso, maximiza el uso de la CPU en el siguiente núcleo, hasta que el uso general de la CPU sea del 100 %.

Conecté windbg con extensiones sos y parece que para cada núcleo al máximo hay 1 subproceso atascado en System.AppDomain.Unload(System.AppDomain) y otro atascado en Oracle.DataAccess.Client.OracleTuningAgent.DoScan().

Primer hilo

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

Segundo hilo

  • Sistema.Dominio de aplicación.Descargar(Sistema.Dominio de aplicación)
  • 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)

Parece que AppDomain.Unload está esperando que finalice OracleTuningAgent.DoScan, pero ese subproceso está bloqueado o inactivo.

Oracle ha confirmado el problema (error n.° 9648040) y es una prioridad máxima. Mientras tanto, las posibles soluciones son:

  1. Volver a 11gR1/cliente anterior
  2. Agregue 'Self Tuning=false' a la cadena de conexión. Por supuesto, perderá los beneficios de la sintonización automática.

-Scott