Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当网站停止时,Oracle数据提供程序将锁定IIS工作进程_Asp.net_Oracle_Iis_Oracle11g - Fatal编程技术网

Asp.net 当网站停止时,Oracle数据提供程序将锁定IIS工作进程

Asp.net 当网站停止时,Oracle数据提供程序将锁定IIS工作进程,asp.net,oracle,iis,oracle11g,Asp.net,Oracle,Iis,Oracle11g,我们在Oracle11gRelease2中遇到了一个棘手的问题,w3wp进程接管了整个处理器核心,调试表明Oracle数据提供程序正在无限地抛出ThreadAbortException。开发人员通过执行以下操作发现此问题: 1) 浏览本地使用Oracle数据连接的网站(我们所有网站都使用IIS,而不是ASP.NET开发服务器)。这可以确保w3wp进程正在运行,并且应用程序池中存在活动的Oracle连接池 2) 停止网站(或在Visual Studio中对相关网站执行“全部重建”操作) 我们在受影

我们在Oracle11gRelease2中遇到了一个棘手的问题,w3wp进程接管了整个处理器核心,调试表明Oracle数据提供程序正在无限地抛出ThreadAbortException。开发人员通过执行以下操作发现此问题:

1) 浏览本地使用Oracle数据连接的网站(我们所有网站都使用IIS,而不是ASP.NET开发服务器)。这可以确保w3wp进程正在运行,并且应用程序池中存在活动的Oracle连接池

2) 停止网站(或在Visual Studio中对相关网站执行“全部重建”操作)


我们在受影响的应用程序(所有Oracle web应用程序)中的Oracle连接处理功能完善且强健。如果禁用连接池,则不会出现此问题。此问题在Oracle 11g版本1中不会出现。

任何触发重新编译(web.config更改、app_offline.htm、.aspx文件更改等)的操作都会导致内核上的CPU使用量达到最大值。如果您重复这个过程,它会使下一个内核的CPU使用率达到最大值,直到总体CPU使用率达到100%

我将windbg与sos扩展连接起来,看起来每个最大化的核心都有一个线程卡在System.AppDomain.Unload(System.AppDomain)中,另一个线程卡在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()
第二线

  • System.AppDomain.Unload(System.AppDomain)
  • System.Web.HttpRuntime.ReleaseResources和UnloadappDomain(System.Object)
  • System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object)
  • System.Threading.\u ThreadPoolWaitCallback.PerformWaitCallbackInternal(System.Threading.\u ThreadPoolWaitCallback)
  • System.Threading.\u ThreadPoolWaitCallback.PerformWaitCallback(System.Object)
看起来AppDomain.Unload正在等待OracleTuningAgent.DoScan完成,但该线程被阻塞或处于休眠状态

甲骨文已经确认了这个问题(bug#9648040),这是一个首要问题。同时,可能的解决办法是:

  • 回滚到11gR1/以前的客户端
  • 将“Self-Tuning=false”添加到连接字符串中。当然,您将失去自动调谐的好处

  • -斯科特

    这个问题已经解决了。该修复程序在Oracle 11.2.0.1.2中发布,可通过Oracle.com网站获得

    不幸的是,该修复目前只能通过“我的Oracle支持”帐户提供

    这已在11.2.0.2和补丁9966926 ORACLE 11G 11.2.0.1 WINDOWS补丁5(64位AMD64和英特尔EM64T)中修复

    或解决方法:是通过在连接字符串中添加“self-tuning=false”来禁用自调优


    干杯,斯科特,这解决了我的问题,尽管有点不同。基本上,我的单元测试运行人员没有通过其他好的测试,因为他们无法卸载appdomain。希望Oracle尽快发布修复程序。我认为您列出的版本中没有修复。我相信它是在11.2.0.1.2版本中修复的。