Spring HikariCP连接在点击10次后超时

Spring HikariCP连接在点击10次后超时,spring,Spring,我最近升级到SpringBoot 2.0.2.0版本。默认连接池已从Tomcat移动到HikariCP。我已将application.properties更改如下 spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.hikari.minimumIdle=5 spring.datasource.hikari.maximumPoolSize=10 spring.datasource.hikari.id

我最近升级到SpringBoot 2.0.2.0版本。默认连接池已从Tomcat移动到HikariCP。我已将application.properties更改如下

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
我正在使用standard Crudepository在Oracle DB上运行。我已经构建了一个示例控制器来从数据库中获取数据。点击10次后,报告以下错误,tha后不执行任何查询。如果我在设置中遗漏了什么,请告诉我。使用1.5.10时,一切正常

22-May-2018 16:02:06.710 [AsyncIPMSProc-2] WARN  o.h.e.j.spi.SqlExceptionHelper - SQL Error: 0, SQLState: null
22-May-2018 16:02:06.710 [AsyncIPMSProc-2] ERROR o.h.e.j.spi.SqlExceptionHelper - HikariPool-1 - Connection is not available, request timed out after 30001ms.
22-May-2018 16:02:06.715 [AsyncIPMSProc-2] ERROR o.s.a.i.SimpleAsyncUncaughtExceptionHandler - Unexpected error occurred invoking async method 'public void org.coffeeshop.service.CommunicationService.processCommunicationRequest(java.lang.Long,java.lang.String)'.
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection
    at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:450)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:474)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:135)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
    at com.sun.proxy.$Proxy152.findById(Unknown Source)
    at org.coffeeshop.service.CommunicationService.processCommunicationRequest(CommunicationService.java:297)
    at org.coffeeshop.service.CommunicationService$$FastClassBySpringCGLIB$$d205c5a.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection
    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:48)
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97)
    at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:109)
    at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:136)
    at org.hibernate.internal.SessionImpl.connection(SessionImpl.java:524)
    at sun.reflect.GeneratedMethodAccessor105.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:223)
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:207)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle.doGetConnection(HibernateJpaDialect.java:391)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:154)
    at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:400)
    ... 25 common frames omitted
Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30001ms.
    at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:669)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:183)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:148)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
    at org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35)
    at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:106)
    ... 35 common frames omitted
22-May-2018 16:02:07.634 [AsyncIPMSProc-1] WARN  o.h.e.j.spi.SqlExceptionHelper
                - SQL Error: 0, SQLState: null
22-May-2018 16:02:07.634 [AsyncIPMSProc-1] ERROR o.h.e.j.spi.SqlExceptionHelper
                - HikariPool-1 - Connection is not available, request timed out after 30000ms.
22-May-2018 16:02:07.634 [AsyncIPMSProc-1] ERROR o.c.s.CommunicationService
                - Unhandled Error Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection
2018年5月22日16:02:06.710[AsyncIPMSProc-2]警告o.h.e.j.spi.SqlExceptionHelper-SQL错误:0,SQLState:null
2018年5月22日16:02:06.710[AsyncIPMSProc-2]错误o.h.e.j.spi.SqlExceptionHelper-HikariPool-1-连接不可用,请求在30001ms后超时。
2018年5月22日16:02:06.715[AsyncIPMSProc-2]错误o.s.a.i.SimpleAsyncUncaughtExceptionHandler-调用异步方法“public void org.coffeeshop.service.CommunicationService.processCommunicationRequest(java.lang.Long,java.lang.String)”时发生意外错误。
org.springframework.transaction.CannotCreateTransactionException:无法为事务打开JPA EntityManager;嵌套异常为org.hibernate.exception.JDBCConnectionException:无法获取JDBC连接
位于org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:450)
位于org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378)
在org.springframework.transaction.interceptor.TransactionSpectSupport.CreateTransactionIfEssential(TransactionSpectSupport.java:474)上
位于org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:289)
位于org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:185)
位于org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:185)
位于org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:135)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:185)
位于org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:185)
位于org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:185)
位于org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
位于com.sun.proxy.$Proxy152.findById(未知源)
位于org.coffeeshop.service.CommunicationService.processCommunicationRequest(CommunicationService.java:297)
在org.coffeeshop.service.CommunicationService$$FastClassBySpringCGLIB$$d205c5a.invoke()上
位于org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
位于org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)
在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:163)上
位于org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
运行(Thread.java:745)
原因:org.hibernate.exception.JDBCConnectionException:无法获取JDBC连接
位于org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:48)
位于org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
位于org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
位于org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97)
位于org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.AcquireConnectionInneed(LogicalConnectionManagedImpl.java:109)
位于org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:136)
位于org.hibernate.internal.SessionImpl.connection(SessionImpl.java:524)
位于sun.reflect.GeneratedMethodAccessor105.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:223)
位于org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:207)
位于org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle.doGetConnection(HibernateJpaDialect.java:391)
位于org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:154)
位于org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:400)
... 省略25个公共框架
原因:java.sql.SQLTransientConnectionException:HikariPool-1-连接不可用,请求在30001ms后超时。
在com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:669)上
在com.za
spring.datasource.hikari.leakDetectionThreshold=2000
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)
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)