我们在Oracle 11g第2版中遇到了一个令人讨厌的问题,其中w3wp进程接管整个处理器核心,并且调试显示Oracle数据提供程序无限地抛出ThreadAbortExceptions。开发人员通过执行以下操作找到了此问题:
1)浏览在本地使用Oracle数据连接的网站(http://localhost/OracleWebSite - 我们为所有站点使用IIS而不是ASP.NET dev服务器。这可确保w3wp进程正在运行,并且应用程序池中存在活动的Oracle连接池。
2)停止网站(或在相关网站上的Visual Studio中执行Rebuild All操作)。
我们在受影响的应用程序(所有Oracle Web应用程序)中的Oracle连接处理已经建立并且功能强大。如果我们禁用连接池,则不会发生此问题。 Oracle 11g第1版中不会发生此问题。
答案 0 :(得分:14)
触发重新编译的任何内容(web.config更改,app_offline.htm,.aspx文件更改等)都会导致核心上的CPU使用率最大化。如果重复此过程,则会最大化下一个核心的CPU使用率,直到整体CPU使用率为100%。
我用sos扩展连接了windbg,看起来每个maxed out核心都有一个线程卡在System.AppDomain.Unload(System.AppDomain)中,另一个卡在Oracle.DataAccess.Client.OracleTuningAgent.DoScan()上
第一个帖子
第二个帖子
看起来AppDomain.Unload正在等待OracleTuningAgent.DoScan完成,但该线程被阻塞或正在休眠。
Oracle已经确认了这个问题(错误#9648040),这是一个重中之重。与此同时,可能的解决方法是:
-Scott
答案 1 :(得分:8)
这已经解决了。该修补程序在Oracle 11.2.0.1.2中发布,可通过oracle.com网站获取。
不幸的是,此修复程序目前只能通过“My Oracle Support”帐户使用。
已在11.2.0.2和修补程序9966926修复了ORACLE 11G 11.2.0.1 PATCH 5 WINGOWS(64位AMD64和INTEL EM64T)。
或替代方法:通过向连接字符串添加“Self Tuning = false”来禁用自我调整。