最近遇到一个问题,我们使用了cce云容器部署应用,数据库用的oracle19c版本,因为有主备库jdbc连接中使用TNS写法将主备库都写上了,具体配置如下,由于涉密就把关键信息脱敏了,测试发现如果jdbc-url中第一个数据库服务器关机或者随便写一个没法pin通的ip,第二个ip是能正常连接的数据库,那么启动时大概需要10分钟才能成功,容器日志中显示先加载基础配置,10分钟后开始加载应用配置,这段时间由于探针检测间隔时间是60s,会一直失败,如果达到失败上限就再自动重启了,然后无限循环下去,我把探针次数上限调大,才发现10分钟后竟然就正常启动了,就是不知道这个10分钟的时间配置是怎么来的,一开始以为是min-evictable-idle-time的配置,但是把这个改成120000之后再测还是需要10分钟,有没有朋友知道这个原理的,求解答。
<jdbc-connection-pool link-name="jdbc/test" name="test" bundle-app="true" factory="com. tongweb.web. jdbc.pool. DataSourceFactory" driver-class="oracle. jdoc.driver.OracleDriver" driver-jar="ojdoc8-19.10.0.0.jar"
jdbc-url="jdoc: oracle: thin: @ (DESCRIPTION= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=10.1.1.0) (PORT=0001) ) (ADDRESS= (PROTOCOL-TCP) (HOST=10.1.1.1) (PORT=0001)) ) (CONNECT_DATA=(SERVICE_ NAME=srv)))"user-name="testname" jummqilx="1111111111111111"
initial-size="10" max-active="20" min-idle="4" max-wait="15000" validation-query="SELECT 1 FROM DUAL" validation-query-timeout="1" test-on-borrow="true" test-on-connect="false" test-on-return="false" test-while-idle="true" validation-interval="1000"
time-between-eviction-runs="60000" min-evictable-idle-time=" 600000" max-age="900000"
remove-abandoned="false"
remove-abandoned-timeout="300" sql-log="false" log-on-excute-time="20"
jdoc-interceptors="com.tongweb.web.jdbc.pool.interceptor.ConnectionState; com.tongweb.web.jdbc.pool.interceptor.StatementFinalizer"/>