Hikari数据库连接池泄露问题排查

Hikari数据库连接池泄露问题排查

1、配置文件中配置泄露监测阈值

spring.datasource.hikari.leak-detection-threshold=600000

2、log配置日志输出

<Configuration status="INFO" monitorInterval="5" packages="com.jiuqi.np.log.log4j2.appender"> 
 	<properties>
        <!--设置日志在硬盘上输出的目录-->
        <!-- System.out.println(System.getProperty("java.io.tmpdir"));
             C:\Users\Kim\AppData\Local\Temp
         -->
        <property name="logPath">${sys:java.io.tmpdir}/jiuqi/logs</property>
        <property name="historyLogPath">${sys:java.io.tmpdir}/jiuqi/logs/history</property>
    </properties>
    <Appenders>
        <RollingFile name="hikariLogFile" fileName="${logPath}/hikari.log" filePattern="${historyLogPath}/$${date:yyyy-MM}/hikari-%d{yyyy-MM-dd}-%i.log.zip">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss.SSS} [%t] %C:%M:%L - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <SizeBasedTriggeringPolicy size="20M" />
            </Policies>
            <DefaultRolloverStrategy max="20" />
        </RollingFile>
    </Appenders>
	<Loggers>
        <Logger name="com.zaxxer.hikari" level="INFO" additivity="false">
            <appender-ref ref="hikariLogFile" />
        </Logger>
	</Loggers>
</Configuration>

3、查看日志输出

win系统上述配置的默认文件夹地址:C:\Users\JIUQI\AppData\Local\Temp\jiuqi\logs

也可以在启动参数配置:java -Djava.io.tmpdir=/path/to/tmpdir

2022-08-22 12:43:38.819 [nr housekeeper] com.zaxxer.hikari.pool.ProxyLeakTask:run:84 - Connection leak detection triggered for oracle.jdbc.driver.T4CConnection@ac2d942 on thread http-nio-8188-exec-7, stack trace follows
java.lang.Exception: Apparent connection leak detected
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) ~[HikariCP-4.0.3.jar:?]
	at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159) ~[spring-jdbc-5.3.20.jar:5.3.20]
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117) ~[spring-jdbc-5.3.20.jar:5.3.20]
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) ~[spring-jdbc-5.3.20.jar:5.3.20]
	at com.jiuqi.nr.dataentry.web.ActionController.batchCheckForm(ActionController.java:823) ~[main/:?]
	at com.jiuqi.nr.dataentry.web.ActionController$$FastClassBySpringCGLIB$$1.invoke(<generated>) ~[main/:?]

注意:有些数据库驱动,在远程连接数据库时hakari.log日志会抛出异常

2022-08-22 12:24:39.994 [main] com.zaxxer.hikari.pool.PoolBase:getAndSetNetworkTimeout:541 - nr - Driver does not support get/set network timeout for connections. (oracle.jdbc.driver.T4CConnection.getNetworkTimeout()I)

这种大概率是数据库驱动问题,如:上述问题用的ojdbc6,换成ojdbc7就没问题了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值