Java Hikari CP给出通信失败链接错误,其中普通JDBC连接正在工作
场景:使用Hikari CP打开和初始化连接池。 状态:从服务器接收到通信链路故障零数据包。 目标服务器:MYSQL 5.6.31-0ubuntu0.15.10.1 驱动程序库:编译组:“mysql”,名称:“mysql连接器java”,版本:“8.0.11” Hikari CP:编译组:“com.zaxxer”,名称:“HikariCP”,版本:“3.1.0” 不使用Hikari CP的普通JDBC连接工作正常 问题:我做错了什么? 尝试的情况:将ideltimeout和maxlifetime更改为比maxtimewait out sql server的默认值少一分钟。同样的问题仍然存在。Java Hikari CP给出通信失败链接错误,其中普通JDBC连接正在工作,java,hikaricp,Java,Hikaricp,场景:使用Hikari CP打开和初始化连接池。 状态:从服务器接收到通信链路故障零数据包。 目标服务器:MYSQL 5.6.31-0ubuntu0.15.10.1 驱动程序库:编译组:“mysql”,名称:“mysql连接器java”,版本:“8.0.11” Hikari CP:编译组:“com.zaxxer”,名称:“HikariCP”,版本:“3.1.0” 不使用Hikari CP的普通JDBC连接工作正常 问题:我做错了什么? 尝试的情况:将ideltimeout和maxlifetime
请显示与Hikari连接和直接连接时使用的驱动程序类和URL的文本值。还发布了完整的异常stacktrace。这是url问题。类路径正在拾取不同的dbconfig文件。感谢您的响应您的maxLifetime可能超过应用程序和DB(防火墙、负载平衡器等)之间的基础结构中的DB本机超时或超时。尝试非常短的maxLifetime,例如2分钟(120000ms)。如果错误消失了,您就知道这是问题所在,您可以研究确切的适当值应该是多少。
DbConnectionHolder connectionHolder = new DbConnectionHolder();
HikariConfig tranasctionDbConfig = new HikariConfig();
HikariConfig configDb = new HikariConfig();
tranasctionDbConfig.setDriverClassName(dbConfigHolder.getDriverClassName());
tranasctionDbConfig.setJdbcUrl(dbConfigHolder.getTransactionDbUrl());
tranasctionDbConfig.setMaximumPoolSize(10);
// tranasctionDbConfig.setLeakDetectionThreshold(5000);
//tranasctionDbConfig.setConnectionTimeout(2000);
tranasctionDbConfig.setIdleTimeout(28740000);
tranasctionDbConfig.setMaxLifetime(28740000);
tranasctionDbConfig.setUsername(dbConfigHolder.getTransactionDbUserName());
tranasctionDbConfig.setPassword(dbConfigHolder.getTransactionDbPassword());
configDb.setDriverClassName(dbConfigHolder.getDriverClassName());
configDb.setJdbcUrl(dbConfigHolder.getConfigDbUrl());
configDb.setIdleTimeout(28740000);
configDb.setMaxLifetime(28740000);
configDb.setUsername(dbConfigHolder.getConfigDbUserName());
configDb.setPassword(dbConfigHolder.getConfigDbPassword());
//configDb.setIdleTimeout(200000);
// configDb.setMaxLifetime(200000);
DataSource configDataSource = new HikariDataSource(configDb);
DataSource transactionDatasource = new HikariDataSource(tranasctionDbConfig);
connectionHolder.setConfigDataSource(configDataSource);
connectionHolder.setTranctionDataSource(transactionDatasource);
return connectionHolder;