gpt4 book ai didi

oracle - ODP.NET 托管连接池每 3 分钟关闭/打开一次

转载 作者:行者123 更新时间:2023-12-03 17:17:43 36 4
gpt4 key购买 nike

我们正在使用最新的官方 ODP.NET Managed(发布:2015-10-14 | 版本:12.1.2400)从 Oracle 到 Oracle 12 数据库(非 RAC)配置,我们无法保持数据库连接的事件时间超过通常情况< 3 分钟。

我们的连接字符串指定:

MAX POOL SIZE=10;MIN POOL SIZE=5;INCR POOL SIZE=1;

我们也尝试过
CONNECTION LIFETIME=90000;MAX POOL SIZE=10;MIN POOL SIZE=5;INCR POOL SIZE=1;

当我们在服务器上使用 PerfMon 并观察 HardConnects/HardDisconnects 的计数器时,我们看到连接池每 3 分钟关闭并重新打开 5 个连接,这不是我们所期望的。

我们在使用 EF6 进行 DataAccess 的 web 应用程序和没有 ORM(只是普通的旧 SQL)的应用程序中都有这种行为。

根据 Oracle Documentation :

The connection pooling service closes connections when they are not used; connections are closed every 3 minutes. The Decr Pool Size attribute of the ConnectionString property provides connection pooling service for the maximum number of connections that can be closed every 3 minutes.



对我来说 - 只要连接在生命周期限制内,就应该有有效连接的 MIN POOL SIZE 持续时间比 ConnectionPool 中的 3 分钟长得多。

我们有另一个使用 Devart 的 Oracle 驱动程序的应用程序,该驱动程序通过池连接可以长时间保持事件状态。

有没有其他人在 ODP.NET 托管驱动程序中看到 ConnectionPool 的这种“不当行为”并找到了解决方案?
或者这可能是 ODP.NET Managed 的​​ ConnectionPool 中的错误?

更新 2016.01.27:

我在我的 github 帐户上添加了一个演示应用程序来演示这个问题:

https://github.com/jonnybee/OraConnTest

这只是一个小型的 winforms 应用程序,您可以在其中添加连接字符串并单击按钮启动后台工作程序,每 3 秒运行一次“SELECT 'OK' FROM DUAL”。

我的连接字符串包含:POOLING=True;MAX POOL SIZE=10;DECR POOL SIZE=1;CONNECTION LIFETIME=86400;INCR POOL SIZE=1;MIN POOL SIZE=5 + 您必须添加用户 ID、密码和数据源。

每 3 分钟您将看到 5 个现有连接被关闭并创建了 5 个新连接(MIN POOL SIZE 设置)。

运行此 SQL 以查看实际连接:
选择 sid、logon_time、prev_exec_start、wait_time_micro/1000
来自 v$session
像'%OraWinApp%'这样的程序
按登录时间降序排序

当程序和 perfmon 正在运行时,您将看到这种行为,因为旧的连接被关闭,并且新的 login_time 连接被创建。

最佳答案

我同意你对它应该如何工作的评估,但是 ODP.net 中的连接池有点奇怪。这里的关键是连接生命周期仅在“当应用程序关闭连接时”遵守,其中 decr 池大小似乎有它自己的线程。我不知道他们为什么这样做 - 仅在返回池时验证会创建一个场景,您可以在其中从池中拉出死连接(由防火墙超时终止)。

我实际上设置了最小池大小= 0。这确保在应用程序空闲时池是空的。我几乎可以保证您不会注意到差异,除非您使用的是非常慢的网络或已经有一个已经过载的 oracle 实例。连接池很重要,但通常只需几毫秒即可建立连接。

唯一让我失望的是所有 5 个连接都已关闭 - decr 池大小默认为 1。

关于oracle - ODP.NET 托管连接池每 3 分钟关闭/打开一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34941371/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com