我在这个软件堆栈上运行一个 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(这是我正在执行“显示状态”命令的控制台。
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)而增长,因此我可以声明连接永远不会返回给连接池以供重复使用。
根据 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 */
进入其范围时将从池中获取连接,并将其释放到范围之外
我做错了什么还是我在这个软件堆栈上的连接池使用上有什么问题?