0

我正在使用 Azure 混合连接从在 Azure Linux 上的 Docker 中运行的 Dotnet 5 API 连接到本地 Oracle 12 服务器。我们所有的数据库查询都运行返回游标的存储过程。服务器每周左右会出现一次连接不足的情况。

我对 Oracle 服务器所看到的内容的可见性有限(即没有),并且在服务器上没有管理员权限。我可以请管理员为我运行诊断查询。目前有多个应用程序实例连接到同一个 Oracle 实例。

据我所知,该应用程序以有序的方式关闭并处理连接。我没有覆盖连接字符串中的任何默认连接池设置。我使用来自 Nuget (3.21.1) 的最新 Oracle.ManagedDataAccess.Core 包。

我想知道当池清除未使用的连接并且服务器无限期地保留这些连接时,混合连接(它在后台使用服务总线!)是否无法正确地与服务器通信。如果您在 Azure Hyrbid 连接上大规模使用 Oracle,我很想知道它在较长时间内是否稳定,以及连接池是否正常工作。

更新:仍然没有解决方案,我发现了有关此情况的先前报告,并且我对 Oracle 无法与 HCM 正常合作的预感似乎正在巩固。查看应用服务器插槽的此 Netstat 输出,例如:

~# netstat -p  | grep 1521
tcp        0      0 127.0.0.14:1521         localhost:49192         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:46480         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:42372         CLOSE_WAIT  -
tcp        0      0 localhost:42452         127.0.0.14:1521         FIN_WAIT2   -
tcp        0      0 127.0.0.14:1521         localhost:33472         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60632         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:52922         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:42406         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60254         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:52904         CLOSE_WAIT  -
tcp        0      0 localhost:42470         127.0.0.14:1521         ESTABLISHED 19/dotnet
tcp        0      0 127.0.0.14:1521         localhost:33422         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:49072         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60244         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:52912         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:49100         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:42356         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60822         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:42452         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60728         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60294         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:49132         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:52884         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:33560         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60722         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:52952         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:33492         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:33538         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60704         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60144         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:49146         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:49026         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:42470         ESTABLISHED -
tcp        0      0 127.0.0.14:1521         localhost:42434         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:52932         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60688         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60226         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:60312         CLOSE_WAIT  -
tcp        0      0 127.0.0.14:1521         localhost:33360         CLOSE_WAIT  -

我应该如何解释 Oracle 端口出现在本地和远程列中,具有相同的环回 IP 的事实?

更新并回答最后一个问题:

混合连接管理器将 Oracle 端点公开为客户端上的本地环回地址。我了解 CLOSE_WAIT 表示另一端(HCM)已关闭连接,而本地应用程序(Oracle 池)尚未关闭连接但仍在继续连接。

现在我想知道这是否是 HCM 和 ODP.Net 之间的问题。如果某个东西从池下面关闭了一个活动连接,那么 Oracle 客户端和服务器可能都没有正确处理它?

4

1 回答 1

0

在与 Oracle 和 Microsoft 的支持组织(以及不可避免的相互指责)反复来回之后,确定 Azure 的 HCM 不支持这种情况并且无法使用。我们的客户被迫创建云应用程序用来连接到本地数据库服务器的 VPN。

于 2022-01-13T19:00:09.117 回答