当前位置: 首页 > 知识库问答 >
问题:

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

袁鸿畅
2023-03-14

我有这个使用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个答案

长孙沈义
2023-03-14

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

从minimumIdle的文档中:

此属性控制HikariCP尝试在池中维护的最小空闲连接数。如果空闲连接降至该值以下,HikariCP将尽最大努力快速高效地添加其他连接。但是,为了获得最大的性能和对峰值需求的响应能力,我们建议不要设置此值,而是允许HikariCP充当固定大小的连接池。默认值:与maximumPoolSize相同

 类似资料:
  • 我正在使用hikaricp(这可能也适用于任何其他数据库连接池)。我有一个DBPool类,在其中我实例化了一个HikariDataSource(使用HikariConfig对象)。对于这个DBPool,我使用lazyholder习惯用法来限制每个VM一个池实例。但是,一旦获得对池的引用,就可以检索连接对象(无需任何进一步的锁/同步/信号量检查),因为我认为连接池会处理我的连接对象限制。每次通过数据

  • 在我的程序中,我正在访问wep api。最多可以有7个不同的线程访问web api的不同服务器。每个线程负责一个服务器,每个服务器速率限制每个线程。每个线程更新相同的mysql数据库。线程数保持不变。 在我的示例中,是否需要连接池?我不应该只打开7个不同的连接,这些连接将在程序的生命周期中打开吗?

  • STOMP 一种简单的消息传递协议,最初创建用于脚本语言,其框架受 HTTP 启发。 STOMP 得到广泛支持,心脏长连接一小时左右失去连接 失去到未定义的连接-建立连接后失去连接非常适合在 WebSocket 和 web 上使用。 SockJS SockJS是WebSocket技术的一种模拟,在表面上,它尽可能使用原生webSocket API,但是再底层非常智能,优先使用原生WebSocket,如果在不支持WebSocket的浏览器中,会自动降为轮询的方式。

  • 地狱, 我是否可以获取HKARIP连接池度量信息,如总连接数、空闲连接数等? 我知道Hikaripool记录这样的信息: 清理前池统计数据库(总计=20,使用次数=0,可用次数=20,等待次数=0) 但是它太频繁了,我的代码无法控制它。我想在可配置的时间内记录这些信息,例如1分钟。顺便说一句,我用Scala Slick 3.0

  • 我使用具有以下设置的Hikary连接池: 在getConnection()之后,hikari尝试获取到实例的2个连接,但只将一个连接放在连接池中。我怎样才能修好它?hikari版本是

  • 我正在开发一个查询多个数据库的监控插件。我想使用HikariCP来保持连接打开,但我不知道如何实例化连接池。 HikariCP是否只使用一个池来存储多个数据库?或者一个数据库只有一个池,我的责任是实例化我将使用的数据库中的尽可能多的池。