关于Hikari连接池初始化慢的问题

环境:

jdk21、windows 10

问题描述:

spring boot启动时会打印几行关于hikari的日志,类似下边这种:

2025-02-13 14:55:48.522  INFO 21168 ---  [admin-service] [omcat-handler-1] com.zaxxer.hikari.HikariDataSource       : HikariCP - Starting...
2025-02-13 14:55:48.729  INFO 21168 ---  [admin-service] [omcat-handler-1] com.zaxxer.hikari.pool.HikariPool        : HikariCP - Added connection com.mysql.cj.jdbc.ConnectionImpl@1a40ab
2025-02-13 14:55:48.731  INFO 21168 ---  [admin-service] [omcat-handler-1] com.zaxxer.hikari.HikariDataSource       : HikariCP - Start completed.

第一行表示开始初始化,第三行是初始化结束。我遇到的问题是:从开始初始化到初始化结束,花费的时间超过20秒。

解决方法:

经过层层debug,最终定位到了是jdk中的 Inet4AddressImpl.getHostByAddr()这个方法阻塞导致的。根据名字来看,此方法应该是根据ip查询对应的域名。hikari在初始化连接池时,会以数据库地址作为参数来调用此方法,但是我的数据库是内网部署,ip是192.168.14.33,暂时不知道为啥初始化的时候会调用这个方法。

根据这个线索找了很多方法,最终发现只有修改host文件管用:

打开C:\Windows\System32\drivers\etc\hosts,在其中添加一行解析保存,然后重启程序即可

暂时不知道为啥发生这个问题,不过大概了解了这个问题是出在dns解析上,以上给出的只是个临时的解决办法,后边找到根源后再回来补充一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值