【发布时间】:2014-12-10 08:53:03
【问题描述】:
我有这段代码使用 HikariCP 连接池:
config.setMaximumPoolSize(100);
config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
config.addDataSourceProperty("serverName", hostname);
config.addDataSourceProperty("port", portnumber);
config.addDataSourceProperty("databaseName", dbname);
config.addDataSourceProperty("user", username);
config.addDataSourceProperty("password", password);
config.setConnectionTimeout(30000);
config.setInitializationFailFast(false);
pooledDataSource = new HikariDataSource(config);
我通过发出命令“Show Processlist”来监控 mysql 中的连接,我看到在行之后创建了 100 个连接:
pooledDataSource = new HikariDataSource(config);
...正在运行。我敢肯定这不会发生,对吧?它应该稍后在我执行 pooledDataSource.getConnection() 时创建连接。
我做错了什么?为什么会立即创建 100 个连接?
【问题讨论】:
-
顺便说一句,100 个连接可能太多了:github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
-
下面的答案是正确的,对吧?请这样标记。
-
试用 arivu 数据源 org.arivu.dbds。 Gradle 依赖编译组:'org.arivu',名称:'datasource',版本:'1.0.2'。它有更好的连接池实现。
标签: java mysql database-connection connection-pooling