最近我们开始遇到一些性能问题.似乎Oracle连接没有关闭并最终堆积,直到它崩溃我们的网站.
作为第一步,我们进行了代码审查,并确保在执行后关闭所有打开的连接.
OracleConnection cn = Helpers.ConnectToDB(); try { cn.open(); //do somtehing } catch (Exception ex) { //log error } finally { cn.Close(); cn.dispose(); }
但这并没有帮助,每隔几个小时连接堆积并崩溃我们的网站.
这是昨天的连接日志:
TO_CHAR(DATE_TIME,'DD/MM/YYYY MACHINE STATUS CONNECTIONS 19/01/2012 14:40:03 WORKGROUP\OTH-IIS-1 ACTIVE 1 19/01/2012 14:38:00 WORKGROUP\OTH-IIS-1 ACTIVE 2 19/01/2012 14:35:57 WORKGROUP\OTH-IIS-1 ACTIVE 2 19/01/2012 14:34:55 WORKGROUP\OTH-IIS-1 ACTIVE 28 19/01/2012 14:33:54 WORKGROUP\OTH-IIS-1 ACTIVE 26 19/01/2012 14:31:51 WORKGROUP\OTH-IIS-1 ACTIVE 34 19/01/2012 14:30:49 WORKGROUP\OTH-IIS-1 ACTIVE 96 19/01/2012 14:29:47 WORKGROUP\OTH-IIS-1 ACTIVE 73 19/01/2012 14:28:46 WORKGROUP\OTH-IIS-1 ACTIVE 119 19/01/2012 14:27:44 WORKGROUP\OTH-IIS-1 ACTIVE 161 19/01/2012 14:26:43 WORKGROUP\OTH-IIS-1 ACTIVE 152 19/01/2012 14:25:41 WORKGROUP\OTH-IIS-1 ACTIVE 109 19/01/2012 14:24:40 WORKGROUP\OTH-IIS-1 ACTIVE 74 19/01/2012 14:23:38 WORKGROUP\OTH-IIS-1 ACTIVE 26 19/01/2012 14:22:36 WORKGROUP\OTH-IIS-1 ACTIVE 2 19/01/2012 14:21:35 WORKGROUP\OTH-IIS-1 ACTIVE 2
崩溃点发生在14:27:44,重新启动应用程序后,连接开始下降.
我们使用的连接字符串是:
<add name="OracleRead" connectionString="Data Source=xxx;User ID=yyy;Password=zzz;Max Pool Size=250;Connection Timeout=160;" provIDername="Oracle.DataAccess"/>
那么这里的问题是什么?
我们是否需要定义或更改以下属性之一:
Connection lifetime,Decr Pool Size,Max Pool Size,Min Pool Size?
在这种情况下,建议的设置是什么?
解决方法 您需要显式处置所有Oracle.DataAccess对象,包括Connections,Commands和Parameters.请参阅以下注释中的代码示例:
https://nhibernate.jira.com/browse/NH-278
其他几点说明:
>首选using关键字,因为即使在特殊情况下也能保证处理> ODP Paramter对象是特殊的(与常规ADO.NET参数契约相比),因为它也需要显式处理(例如,sql Server版本不需要)
总结以上是内存溢出为你收集整理的Oracle连接没有关闭全部内容,希望文章能够帮你解决Oracle连接没有关闭所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)