asp.net 2.0 使用 odp.net 10.1.04 连接到 Oracle 10g。
我们的 Web 应用程序每天都会出现一次这个问题:ODP-1000 "Connection request timed out"。
众所周知,这是一个内存泄漏问题,由于打开的连接没有被关闭和处理。
我们已经仔细检查了我们的代码,并且打开后的所有连接都已关闭和处置。OracleCommand、Oracledatareader 等所有 odp.net 对象在使用后都会被丢弃。
在 web.config 上,这是我们的连接字符串:
<add key="ConnectionString" value="user id=xxxx;data source=XXXX;password=xxxxx;Pooling=True;Connection Timeout=15;Incr Pool Size=5;Decr Pool Size=3;Max Pool Size=300;Min Pool Size=10;Validate Connection=true;"/>
我们已将连接超时增加到 60。
由于我们在代码中找不到任何未关闭的连接,当 conn.Open 收到错误“连接请求超时”时,有什么方法可以关闭或销毁非活动的 Oracle 会话?
根据一些信息: http ://rainmanalex.wordpress.com/2008/11/13/odpnet-connection-string-attributes/
“调节器线程每 3 分钟生成一次,如果未使用,则关闭最多 Decr Pool Size 数量的池连接。”
在收到错误“连接请求超时”时,有没有办法强制关闭非活动连接,而不是等待 3 分钟?
就像是:
If conn.Open gets error "Connection request timed out"
Then
Destroy inactive Oracle session
Try again conn.Open
End If