我有Play 2.4和Slick 3.1的默认设置,我正在使用数据库演进(我的数据库是PostgreSQL)。似乎进化会造成连接泄漏。
我正在连接两个数据库(prod和test):
slick.dbs.default.driver = "slick.driver.PostgresDriver$"
slick.dbs.default.db.driver = "org.postgresql.Driver"
slick.dbs.default.db.url = "jdbc:postgresql://localhost:5432/et"
slick.dbs.default.db.user = "postgres"
slick.dbs.default.db.password = "postgres"
slick.dbs.test.driver = "slick.driver.PostgresDriver$"
slick.dbs.test.db.driver = "org.postgresql.Driver"
slick.dbs.test.db.url = "jdbc:postgresql://localhost:5432/et_test"
slick.dbs.test.db.user = "postgres"
slick.dbs.test.db.password = "postgres"
这是应用程序启动前的连接计数:
et=# select count(*) from pg_stat_activity;
count
-------
3
(1 row)
这是应用程序启动后的连接数:
et=# select count(*) from pg_stat_activity;
count
-------
45
(1 row)
似乎每个数据库分配21个连接 - 总共42个,足够公平。
这是点击“apply evolutions”后的连接数:
et=# select count(*) from pg_stat_activity;
count
-------
87
(1 row)
似乎evolutions每个数据库分配21个连接,所以另外42个。
应用程序运行10分钟后空闲:
et=# select count(*) from pg_stat_activity;
count
-------
87
(1 row)
这看起来像是由演变产生的明显的连接泄漏,不是吗?如我错了请纠正我。关于如何解决这个问题的任何想法?