HikariCP连接池立即创建100个连接

时间:2014-12-10 08:53:04

标签: java mysql database-connection connection-pooling

我有使用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个连接?

1 个答案:

答案 0 :(得分:13)

默认情况下,HikariCP作为固定大小的池运行。您需要设置minimumIdle。那就是它。

来自minimumIdle的文档:

  

此属性控制最小空闲连接数   HikariCP试图在池中维护。如果空闲连接下降   低于此值,HikariCP将尽最大努力添加额外的   快速有效地建立联系。但是,为了获得最佳性能   并且对尖峰需求的响应能力,我们建议不要设置它   值,而是允许HikariCP充当固定大小的连接   池。 默认值:与maximumPoolSize相同