hikaripool连接保持,HikariPool-1 – 连接不可用,请求超时后[通俗易懂]

hikaripool连接保持,HikariPool-1 – 连接不可用,请求超时后[通俗易懂]I’musingHikariCP2.4.7forconnectionpool.EverythingisfinejustafterstartingtheapplicationbutaftersometimewithoutinvokinggetConnection()IgetthiserrorwhenI’mtryingtogetConnect…

大家好,又见面了,我是你们的朋友全栈君。

hikaripool连接保持,HikariPool-1 - 连接不可用,请求超时后[通俗易懂]

I’m using HikariCP 2.4.7 for connection pool. Everything is fine just after starting the application but after some time without invoking getConnection() I get this error when I’m trying to 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)

During startup I’m initializing 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);

And then I’m using it like this:

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();

}

What am I doing wrong? How to troubleshoot this problem?

Edit:

Adding this solves the problem:

hikariDataSource.setIdleTimeout(60000);

hikariDataSource.setConnectionTimeout(60000);

hikariDataSource.setValidationTimeout(3000);

hikariDataSource.setLoginTimeout(5);

hikariDataSource.setMaxLifetime(60000);

It may be something connected with the server closing connections before HikariCP does but I’m not sure. Any comment on this would be appreciated.

解决方案

I start by saying than i am not a Java programmer, you can try to close jOOQ DSL also:

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();

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152381.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • datagrid激活码【在线注册码/序列号/破解码】

    datagrid激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
  • eclipse乱码解决方法

    eclipse乱码解决方法eclipse之所以会出现乱码问题是因为eclipse编辑器选择的编码规则是可变的。一般默认都是UTF-8或者GBK,当从外部导入的一个工程时,如果该工程的编码方式与eclipse中设置的编码方式不同,就会产生中文的乱码问题,这其中还有几种情况。如果导入的整个工程的编码方式与eclipse的编码方式有冲突,那么这个工程里所有的中文都是乱码;如果所有工程的编码方式与eclipse工作空间的

    2022年5月25日
  • IDEA汉化之2021版本

    IDEA汉化之2021版本打开最新版本的IDEA后在浏览器直接进入Chinese(Simplified)LanguagePack/中文语言包-IntelliJIDEs|JetBrains,右上角,IDEA中会出现弹窗,直接起飞!

    2022年5月29日
  • QQ农场开挂_农场游戏源码

    QQ农场开挂_农场游戏源码  QQ空间\校友农场外挂源代码12009年08月18日星期二11:41{///////////////////////////////////////////////////////////////////////////////                           声明//本代码不针对任何团体和个人,只为学习\交流\促进游戏的发展而发布//…

    2022年9月12日
  • java的句柄_java获取窗口句柄

    java的句柄_java获取窗口句柄Java代码书写过程,文件资源的释放需要特别谨慎的对待.通常文件资源使用后必须close,然后再删除。如果先删除但没有close掉,会造成文件句柄未被释放.这会造成实际使用磁盘空间较大,成为瓶颈importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;publicclassFileTest{p…

    2022年10月18日
  • CDatabase::ExecuteSQL()

    CDatabase::ExecuteSQL()CDatabase::ExecuteSQLCallthismemberfunctionwhenyouneedtoexecuteaSQLcommanddirectly.当你要直接执行SQL命令的时候就访问这个成员函数voidExecuteSQL(  LPCTSTRlpszSQL );lpszSQLPointertoanull

    2022年5月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号