我最近升级到SpringBoot 2.0.2.RELEASE。默认连接池已从Tomcat移至HikariCP。我已经更改了我的application.properties,如下所示
$.each(json, function(i, item) {
let myLatlng = new mapboxgl.LngLat(json[i].lng, json[i].lat);
let marker = new mapboxgl.Marker()
.setLngLat(myLatlng)
.setPopup(new mapboxgl.Popup({ offset: 25 })
.setHTML('<h3>' + json[i].name + '</h3><p>' + json[i].address1 + '</p>'))
.addTo(map);
});
我使用标准的CrudRepository来操作Oracle DB。我已经构建了一个样本控制器来从DB中获取数据。在10次点击之后,报告以下错误并且在之后没有执行查询。如果我在设置中遗漏任何内容,请告诉我。一切都运行良好1.5.10。
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.maximumPoolSize=10
spring.datasource.hikari.idleTimeout=20000
spring.datasource.hikari.poolName=CoffeeHikariCP
spring.datasource.hikari.maxLifetime=1800000
spring.datasource.hikari.connectionTimeout=30000
spring.jpa.open-in-view=false
先谢谢
答案 0 :(得分:0)
我有同样的问题。
正如@brettw所说,您可以启用Hikari的LeakDetectionThreshold。
在Spring-boot中,您可以在application.properties中添加以下属性:
spring.datasource.hikari.leakDetectionThreshold=2000
Hikari抛出了这个有用的堆栈跟踪:
23:59:06.887 [HikariPool-1 housekeeper] WARN com.zaxxer.hikari.pool.ProxyLeakTask - Connection leak detection triggered for conn9: url=jdbc:h2:file:./src/main/resources/h2/schema-test.mv.db user=SA on thread main, stack trace follows
java.lang.Exception: Apparent connection leak detected
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
at xyz.testutils.DbUnitUtils.assertDatabaseEquals(DbUnitUtils.java:43)
at xyz.controller.MyIntegrationTest.test(MyIntegrationTest.java:117)
就我而言,我正在使用DbUnit,并且正在打开Connection
(以检索数据库的内容),但是没有关闭它。关闭连接(.close()
后,它已固定。
答案 1 :(得分:0)
您需要结帐几件事:
如果在每次请求处理后关闭连接或检查是否有泄漏,请增加连接池的大小。
启用leakDetectionThreshold ... hikari.setLeakDetectionThreshold(60 * 1000)
并查看日志中是否有泄漏消息。记录的stacktrace
应该会将您引到代码中借用但未返回连接的位置。
在日志记录框架中为软件包DEBUG level logging
启用com.zaxxer.hikari
,并观察每30秒记录的池统计信息:
DEBUG 2018-03-14 07:06:46 com.zaxxer.hikari.pool.HikariPool - Pool-0 - Before cleanup stats (total=5, active=0, idle=5, waiting=0)
DEBUG 2018-03-14 07:06:46 com.zaxxer.hikari.pool.HikariPool - Pool-0 - After cleanup stats (total=5, active=0, idle=5, waiting=0)
如果它继续增加,请确保使用后关闭连接。