使用HikariCP和Slick管理MySQL连接

时间:2014-11-01 16:03:30

标签: mysql slick hikaricp connector-j

我在这个软件堆栈上运行Scala应用程序:

Mac OS X 10.6.8 Snow Leopard
MySQL 5.1.46
Java 1.6.0_65
Scala 2.11.2
ConnectorJ 5.1.33
HikariCP 2.1.0
Slick 2.1.0

我无法理解为什么即使在关闭Scala应用程序后,与MySQL保持开放连接的原因仍然保持开放状态。唯一正确的方面是Threads_connected从16下降到1(这是我执行' show status'命令的控制台。

mysql> show status like '%onn%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| Aborted_connects         | 0     |
| Connections              | 77    |
| Max_used_connections     | 19    |
| Ssl_client_connects      | 0     |
| Ssl_connect_renegotiates | 0     |
| Ssl_finished_connects    | 0     |
| Threads_connected        | 1     |
+--------------------------+-------+
7 rows in set (0.00 sec)

奇怪的是,我总是看到每次运行应用程序时,连接池中设置的最大开放连接数(HikariCP maximumPoolSize)与DB的开放连接成长,因此我可以说连接永远不会返回到连接池以便重用。

根据Slick文档使用

db withSession { implicit session => 
 /* entering the scope, getting 1 conn from the pool */
 /* 
  do something within the session using the connection I've gotten
 */
}
/* here I'm out of the 'withSession' scope, and the 
   connection should be released */

在进入其范围时将从池中获取连接,并将其释放到范围之外

我做错了什么或者我在这个软件堆栈上的连接池使用方面出了什么问题?

1 个答案:

答案 0 :(得分:2)

Connections是自上次启动mysqld以来已经进行了多少次连接尝试的计数器。这个计数器总是增加;当连接结束时它不会减少。

该计数器不是当前连接的数量 - 即Threads_connected