0

我正在为连接到 7 个不同国家/地区特定 Oracle 数据库的 spring-boot 服务构建自定义健康检查。我想构建这些,以便我可以使用 spring-boot-admin 来监控服务。问题是当服务器不可用时,例如它关闭或防火墙配置不正确,超时需要很长时间,一分钟。Spring-boot-admin 然后将服务器标记为不可访问而不是关闭。

据我了解,正在发生的事情是套接字永远不会连接,最终连接会遇到其他超时。在我的健康检查中,我尝试配置网络超时,但似乎没有任何区别。我们正在使用

https://docs.oracle.com/en/database/oracle/oracle-database/18/jjuar/oracle/ucp/jdbc/PoolDataSourceImpl.html

和ojdbc7

运行状况检查使用为主池定义的数据源 bean,但如果设置网络超时为时已晚,我不确定是否已经创建了池。对我来说,问题是文档真的不清楚哪些属性是有效的。

我已经厌倦了这些,但它们似乎什么也没做

看了这些链接

为 JDBC 连接设置网络超时

JDBC getConnection 超时问题

即使明确设置 PreparedStatement 也不会超时

这提供了有关超时类型的更多详细信息。

https://www.programering.com/a/MDNzIjMwATY.html

所以我的问题是如何真正建立一个预言池来应对网络/套接字、事务、池和语句超时?

4

1 回答 1

0

推荐的连接 URL 如下所示。此外,请参阅UCPTimeouts.java以检查超时相关属性。

 (DESCRIPTION =
         (CONNECT_TIMEOUT=90)  (RETRY_COUNT=20)(RETRY_DELAY=3) (TRANSPORT_CONNECT_TIMEOUT=3) 
           (ADDRESS_LIST =
            (LOAD_BALANCE=on)
            ( ADDRESS = (PROTOCOL = TCP)(HOST=primary-scan)(PORT=1521)))
            (ADDRESS_LIST =
             (LOAD_BALANCE=on)
            ( ADDRESS = (PROTOCOL = TCP)(HOST=secondary-scan)(PORT=1521)))
           (CONNECT_DATA=(SERVICE_NAME = gold-cloud)))
于 2019-10-18T18:55:04.153 回答