Dear Oracle Experts,
My .NET web service application hosted in IIS 7 windows 7 machine, the service dispatches 4 multithreads to open oracle connection to run query at the same time and close connections almost at the same time. Oracle pooling is tunred on, mini size is 15, self tuning is true by default. Each thread has its own oracle connnection. All oracle data access instances are closed and disposed after each query return data. But when each time web service run, I use Debug Diagnosis Tool to dump the IIS worker process, and found the following warning error, indicating the oracle self tuning thread is sleeping:
System.Threading.Thread.SleepInternal(Int32)
Oracle.DataAccess.Client.OracleTuningAgent.DoScan()
Oracle.DataAccess.Client.OracleTuningAgent.TuningFunction()
System.Threading.ExecutionContext.runTryCode(System.Object)
System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
System.Threading.ThreadHelper.ThreadStart()
If I send client multiple times, and dump IIS wporker process again and there's a warning error says over 90% threads are blocked, then eventually if restart the app pool, no IIS worker process can run, they're in deadlock, so IIS hangs.
This link is related:
http://stackoverflow.com/questions/2782169/oracle-data-provider-pegs-iis-worker-process-when-web-site-is-stopped
Any Idea or knowledge on this issues?
Thanks,