数据库连接池Hikari配置及监控

数据库连接池Hikari配置及监控数据库连接池 Hikari hikari

大家好,欢迎来到IT知识分享网。

Hikari常用连接参数说明

Hikari 为 SpringBoot2.0默认的连接池,Hikary常用连接参数说明

参数 说明
maxLifeTime 池中连接的最大生存期。使用中的连接永远不会停止使用,只有在关闭连接后才将其删除。默认30min,不能小于30s,若小于,将设置为默认值       
connectionTimeout 等待来自池的连接的最大毫秒数。默认30min,不能小于250ms,若小于,将设置为默认值
validationTimeout 测试连接的活动性的最长时间。默认5min,不能小于250ms,若小于,将设置为默认值。此值必须小于connectionTimeout
maxPoolSize 池达到的最大连接,包括空闲和使用中的连接。默认10。需按实际应用运行设置
minIdle 池中的最小空闲连接数。默认=maxPoolSize,若小于0或大于maxPoolSize,则设置为maxPoolSize。为了获得峰值需求响应,可不设置
idleTimeout 允许连接在池中保持空闲状态的最长时间。若idleTimeout>maxLifeTime,则设置为0,若idleTimeout<10s,则设置为10min,若minIdle == maxPoolSize并且idleTimeout<>10s,则设置不起作用
auto-commit 从池返回的连接的默认自动提交行为,默认true。

业务应用配置

连接池配置,以供参考。

hikari: pool-name: carpool minimum-idle: 3 maximum-pool-size: 10 idle-timeout: 30000 connection-timeout: 30000 max-lifetime: 60000

如有以下警告信息

Failed to validate connection org.postgresql.jdbc.PgConnection@605c8e77 (This connection has been closed.). Possibly consider using a shorter maxLifetime value. 

或抛出以下异常,则可将maxLifetime设的短一点。

2023-12-02 10:56:20.103 [32mERROR[0;39m --- [http-nio-8080-exec-2] [36mo.a.c.c.C.[.[localhost].[/].[dispatcherServlet][0;39m : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLTransientConnectionException: carpool - Connection is not available, request timed out after 20056ms.] with root cause org.postgresql.util.PSQLException: This connection has been closed. at org.postgresql.jdbc.PgConnection.checkClosed(PgConnection.java:865) at org.postgresql.jdbc.PgConnection.setNetworkTimeout(PgConnection.java:1647) at com.zaxxer.hikari.pool.PoolBase.setNetworkTimeout(PoolBase.java:560) at com.zaxxer.hikari.pool.PoolBase.isConnectionAlive(PoolBase.java:173) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:186) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)

HikariCP监控

若需要监控数据库连接池设置是否合理, 需要能监控到连接池对应的指标, 具体如何操作,可依据以下进行配置。.

1. 增加依赖

<dependency> <groupId>io.dropwizard.metrics</groupId> <artifactId>metrics-core</artifactId> <version>4.0.7</version> </dependency>

 2. 增加配置类

@Configuration public class DataSourceConfig { private final static Logger LOGGER = LoggerFactory.getLogger(DataSourceConfig.class); @Bean @ConfigurationProperties(prefix = "spring.datasource.hikari") public HikariDataSource dataSource(DataSourceProperties properties){ HikariDataSource dataSource = properties.initializeDataSourceBuilder() .type(HikariDataSource.class) .build(); dataSource.setMetricRegistry(initMetricRegistry("carpool")); return dataSource; } public MetricRegistry initMetricRegistry(String poolName) { MetricRegistry metricRegistry = new MetricRegistry(); Slf4jReporter reporter = Slf4jReporter.forRegistry(metricRegistry) .outputTo(LOGGER) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .build(); reporter.start(30, TimeUnit.SECONDS);//30秒打印一次 return metricRegistry; } }

 3. 打印结果

name=carpool.pool.ActiveConnections, value=0 //活跃的连接数 name=carpool.pool.IdleConnections, value=5 //空闲连接数 name=carpool.pool.MaxConnections, value=50 //最大连接数 name=carpool.pool.MinConnections, value=5 //最小连接数 name=carpool.pool.PendingConnections, value=0 //正在等待连接的线程数量。若大于0,则可适当调整最大连接数,即maxPoolSize name=carpool.pool.TotalConnections, value=5 //总连接数,=ActiveConnections+IdleConnections //创建连接时间,单位(ms) name=carpool.pool.ConnectionCreation, count=64, min=20, max=42, mean=25.4595, stddev=4.7287, median=25.0, p75=27.0, p95=35.0, p98=41.0, p99=41.0, p999=41.0 //连接从池中取出到返回的时间,单位(ms) name=carpool.pool.Usage, count=12, min=1, max=161, mean=16.677, stddev=37.069, median=5.0, p75=7.0, p95=90.0, p98=161.0, p99=161.0, p999=161.0 //连接超时比率 name=carpool.pool.ConnectionTimeoutRate, count=0, mean_rate=0.0, m1=0.0, m5=0.0, m15=0.0, rate_unit=events/second //连接等待时间,单位(ms) name=carpool.pool.Wait, count=12, min=0.0216, max=3.9868, mean=2.80117, stddev=1.66339, median=1.9914, p75=3.8614, p95=3.9868, p98=3.9868, p99=3.9868, p999=3.9868, mean_rate=0.0, m1=6.3693E-6, m5=0.078474, m15=0.86262, rate_unit=events/second, duration_unit=milliseconds 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/133330.html

(0)
上一篇 2025-07-24 14:45
下一篇 2025-07-24 15:00

相关推荐

发表回复

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

关注微信