- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 HikariCP 2.4.7 作为连接池。启动应用程序后一切正常,但一段时间后没有调用 getConnection()
我在尝试 getConnection()
时收到此错误:
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 42734ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:555)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:188)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:147)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:99)
at pl.airly.database.ComplexOperations.getSensorDataFromArea(ComplexOperations.java:310)
at pl.airly.database.ComplexOperations.getMeasurementsInAreaWithinTimeFrame(ComplexOperations.java:201)
at pl.airly.ResponseGenerator.getResponseAdequateToRequest(ResponseGenerator.java:139)
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
在启动过程中,我正在初始化 HikariDataSource
:
hikariDataSource = new HikariDataSource();
hikariDataSource.setDriverClassName("org.postgresql.Driver");
hikariDataSource.setUsername(DATABASE_USER_NAME);
hikariDataSource.setPassword(DATABASE_PASSWORD);
hikariDataSource.setJdbcUrl(DATABASE_URL);
hikariDataSource.setLeakDetectionThreshold(5000);
然后我像这样使用它:
try(java.sql.Connection conn = Connection.hikariDataSource.getConnection()) {
Record1 record1 = DSL.using(conn).select(SENSOR.ID) //jOOQ
.from(SENSOR)
.where(SENSOR.ID.equal(1))
.limit(1)
.fetchOne();
Debug.println(record1.getValue(0).toString());
} catch (SQLException e) {
e.printStackTrace();
}
我做错了什么?如何解决这个问题?
编辑:
添加这个解决了问题:
hikariDataSource.setIdleTimeout(60000);
hikariDataSource.setConnectionTimeout(60000);
hikariDataSource.setValidationTimeout(3000);
hikariDataSource.setLoginTimeout(5);
hikariDataSource.setMaxLifetime(60000);
这可能与服务器在 HikariCP 之前关闭连接有关,但我不确定。对此有任何评论,我们将不胜感激。
最佳答案
首先我要说的是我不是 Java 程序员,您也可以尝试关闭 jOOQ DSL:
try(java.sql.Connection conn = Connection.hikariDataSource.getConnection()) {
try (Record1 record1 = DSL.using(conn).select(SENSOR.ID)) {
.from(SENSOR)
.where(SENSOR.ID.equal(1))
.limit(1)
.fetchOne();
Debug.println(record1.getValue(0).toString());
} catch (Exception e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
关于java - HikariPool-1 - 连接不可用,请求超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38688489/
我正在使用 HikariCP 运行 SQLite 数据库。我的配置如下所示: public class SQLiteDataSource { private static final Hika
我正在部署 Spring-Boot4 项目,但出现了一个名为 HikariPool-1 - Exception during pool initialization. 的错误 2019-07-05 1
所以我正在尝试建立连接但它不起作用并给了我这个很好的异常(我不太理解): 11:17:07 [SEVERE] java.sql.SQLException: HikariPool-1 - Interru
这个问题已经有答案了: Closing JDBC Connections in Pool (3 个回答) Best approach for returning connection objects
我有 Hikari 连接池,配置如下 HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setJdbcUrl(d
所以我正在尝试建立连接但它不起作用并给了我这个很好的异常(我不太理解): 11:17:07 [SEVERE] java.sql.SQLException: HikariPool-1 - Interru
我将在我的 WEB 应用程序中使用 HikariCP 而不是 c3p0。好像, super 棒但对我来说,HikariCP 接口(interface)中仍然存在有问题的地方。它包含两个类 - Hika
这也许是一个非常简单的问题。如何禁用 Hikari-CP 调试日志?在我的日志文件中,我有很多这样的消息 DEBUG [.zaxxer.hikari.pool.HikariPool:] - Befor
我正在使用 HikariCP 2.4.7 作为连接池。启动应用程序后一切正常,但一段时间后没有调用 getConnection() 我在尝试 getConnection() 时收到此错误: java.
我正在使用 HikariCP 2.6.1。 我正在平静地使用 MySQL 和 JUnit 4.x。就在今天,我添加了一个新的 @Test 方法,但现在测试失败了。如果我将 @Ignore 放入这个新的
我又开始编写旧程序 https://github.com/JonkiPro/REST-Web-Services .我已将 Spring Boot 从 15.6 版更新到 2.0.0 版。我在编译时遇到
我在下面的配置 xml 映射中收到连接不可用错误消息。请告诉我我在 beolw 代码中做错了什么,或者这是另一个问题。根据我的调查,这是 HikariCP、Hibernate 和 Spring Bat
我在(Java8 + Oauth2 + MySql + Hazelcast +没有群集的http session )组合的生产方式下遇到错误。开发模式运行正常。 Unable to register
我正在尝试在 Tomcat 8.5 中使用 HikariCP JNDI 数据源工厂,但是当它关闭时,我收到以下警告: o.a.c.loader.WebappClassLoaderBase
Exception in thread "task-2" org.springframework.jdbc.datasource.init.UncategorizedScriptException:
我有一个用于测试目的的小型 Java 应用程序。我最近搬到了hikari。我注意到我不断收到此错误。 java.sql.SQLTransientConnectionException: HikariP
由于 Hikari 池初始化异常,我无法部署 Spring boot 2 应用程序。 错误日志是 com.zaxxer.hikari.pool.HikariPool - HikariPool-1 -
我正在使用 Postgresql 和 spring boot 2.0.4。尝试一个接一个地执行查询时会引发以下错误。我执行了以下查询,并且计数不断增加。 SELECT COUNT(*) FROM pg
HikariPool-1 - Connection marked as broken because of SQLSTATE(08S01), ErrorCode(-99999) java.sql.SQ
我正在使用 Spring Boot 和 Hibernate 创建一个简单的 Maven 项目,我想使用 Hibernate 在 mysqlDB 中创建我的表。当我运行 Spring 应用程序时,它不会
我是一名优秀的程序员,十分优秀!