postgresql - HikariCP - 连接已死
问题描述
在我们的项目中有一个 Java Springboot 应用程序连接到 PostgreSQL,我们有 HikariCP 连接池。几个小时后,Java 应用程序和 PostgreSQL 服务器之间的活动操作数增加
在这些情况下,我们会收到这样的错误
2021-10-23 23:09:28.703-04:00 DEBUG [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Pool stats (total=10, active=4, idle=6, waiting=0)
2021-10-23 23:09:28.703-04:00 DEBUG [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Fill pool skipped, pool is at sufficient level.
2021-10-23 23:09:45.937-04:00 DEBUG [CoreTaskScheduler1] com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Timeout failure stats (total=9, active=5, idle=4, waiting=0)
2021-10-23 23:09:45.953-04:00 DEBUG [HikariPool-1 connection closer] com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Closing connection org.postgresql.jdbc4.Jdbc4Connection@2ce66f: (connection is dead)
2021-10-23 23:09:46.016-04:00 ERROR [CoreEventBus-0] f.n.n.s.impl.core.CoreEventHandler - Database connection pool lost connection to DB.
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 5791ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696) ~[HikariCP-4.0.3.jar:na]
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) ~[HikariCP-4.0.3.jar:na]
at com.zaxxer.hikari.metrics.dropwizard.CodahaleHealthChecker$ConnectivityHealthCheck.check(CodahaleHealthChecker.java:95) ~[HikariCP-4.0.3.jar:na]
at com.codahale.metrics.health.HealthCheck.execute(HealthCheck.java:172) ~[metrics-healthchecks-3.1.4.jar:3.1.4]
at com.codahale.metrics.health.HealthCheckRegistry.runHealthCheck(HealthCheckRegistry.java:66) ~[metrics-healthchecks-3.1.4.jar:3.1.4]
at x.y.z.t.u.v.database.DatabaseConnectionHook.runHealthCheck(DatabaseConnectionHook.java:57)
at sun.reflect.GeneratedMethodAccessor80.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_66]
at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_66]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_66]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[na:1.8.0_66]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_66]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[na:1.8.0_66]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_66]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_66]
at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_66]
这是版本信息:
Spring version: 4.3.9.RELEASE
HikariCP version: 4.0.3
Hibernate version: 5.2.10.Final
Postgresql jdbc: 9.3-1104-jdbc41
Server version: Jetty/9.4.11
JVM Version: 1.8.0_19
这是 Hikari 池配置:
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - HikariPool-1 - configuration:
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - allowPoolSuspension.............false
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - autoCommit......................true
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - catalog.........................null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - connectionInitSql...............null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - connectionTestQuery.............null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - connectionTimeout...............30000
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - dataSource......................null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - dataSourceClassName.............null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - dataSourceJNDI..................null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - dataSourceProperties............{password=<masked>}
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - driverClassName................."org.postgresql.Driver"
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - healthCheckProperties...........{connectivityCheckTimeoutMs=1000}
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - healthCheckRegistry.............com.codahale.metrics.health.HealthCheckRegistry@11c9c56
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - idleTimeout.....................600000
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - initializationFailFast..........false
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - isolateInternalQueries..........false
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - jdbc4ConnectionTest.............false
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - jdbcUrl........................."jdbc:postgresql://127.0.0.1:5432/db_log"
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - leakDetectionThreshold..........0
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - maxLifetime.....................1800000
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - maximumPoolSize.................10
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - metricRegistry..................null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - metricsTrackerFactory...........null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - minimumIdle.....................10
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - password........................<masked>
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - poolName........................"HikariPool-1"
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - readOnly........................false
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - registerMbeans..................false
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - scheduledExecutorService........null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - threadFactory...................null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - transactionIsolation............null
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - username........................"log_user"
2021-10-24 15:45:32.521+00:00 DEBUG [WrapperListener_start_runner] com.zaxxer.hikari.HikariConfig - validationTimeout...............5000
解决方案
推荐阅读
- java - @OneToMany 客户和订单表中的项目之间的关系。org.hibernate.exception.SQLGrammarException
- java - 违反使用 Android 广告 ID 政策和第 4.8 节
- asp.net-mvc - 如何在 Login.cshtml 之外的另一个视图中使用脚手架的 LoginModel?
- mysql - 找出每个年龄类别中最常见的流派
- webpack - 将 Electron 应用程序打包到 ASAR 中会导致找不到模块错误
- android - 来自外部存储的FFmpegMediaMetadataRetriever?安卓工作室/科特林
- php - Php Ajax 图像未上传
- java - 将 HTML 和 CSS 样式应用于 Java Swing 组件
- reactjs - 多个 React Native Modal 中的动态值
- javascript - 验证后将基于 html 表单输入的消息返回到 Google 工作表中