type
status
date
slug
summary
tags
category
icon
password
js
😀
最近将Spring Boot升级到了3.4.0,同时升级了mysql-connector-j的版本。一开始以为是Spring Boot的锅,结果查资料发现是mysql-connector-j的问题。
 

原因

直接上结论:这是高版本mysql-connector-j(8.4以上都有这个问题),由于触发了反向 DNS 查询导致。当一个 InetAddress 创建时包含了域名信息,getHostName() 方法会直接返回这个域名,否则会触发反向 DNS 解析,当配置的 DNS 服务器与目标 InetAddress 之前网络状况不佳就会产生延时。而我们本地部署的Mysql不会有域名,它花了很长时间去反解析(感觉是个bug,理论上要屏蔽内网地址)。
 

解决方案

  1. 引入 8.0.33 以下版本,因为此版本的 ConnectionImpl 没有 getHostName() 方法。
  1. 此方法没成功,数据库版本8.0.24。这里贴出来仅供参考 修改 mysql 数据库配置文件,启用 skip-name-resolve 配置,这样就会跳过反向 DNS 解析,只会基于 IP 地址来进行连接和身份验证,加速连接过程并避免 DNS 配置或延迟导致的问题。在 [mysqld] 节点下,新增配置:skip-name-resolve。推荐此方法,简单粗暴。同时,请注意在增加该配置参数后,mysql 的授权表中的 host 字段就不能使用域名只能使用 ip ,因为配置 skip-name-resolve 禁止了域名解析。
 

📎 参考文章

 
Dify设置网络代理Ubuntu安装Dify实录
Loading...
吕行者
吕行者
吕行者
最新发布
Dify设置网络代理
2025-4-22
mysql-connector-j 8.4 启动慢的问题
2025-4-22
Ubuntu安装Dify实录
2025-4-8
解决安卓safe-area-inset-bottom为0的问题
2025-2-28
在Docker容器中,使用代理网络
2025-2-12
MySQL查询&结束死锁
2025-2-5