mysql数据库连接超时如何排查_检查网络延迟与连接池配置
Connection refused 或 Lost connection 错误通常源于网络或客户端配置问题而非 MySQL 拒绝连接应先用 telnet/nc 测试端口连通性再排查 SSL 强制、安全组、连接池 validationQuery 配置及服务端 wait_timeout 参数。Connection refused 或 Lost connection 错误怎么快速定位这类报错不是 MySQL 在拒绝你而是连接根本没发出去或中途断了。先别急着改 wait_timeout90% 的情况是网络或客户端配置卡在半路。常见错误现象ERROR 2003 (HY000): Cant connect to MySQL server on x.x.x.x、Lost connection to MySQL server at reading initial communication packet用 telnet host 3306 或 nc -zv host 3306 直接测端口通不通绕过所有驱动和连接池逻辑如果 telnet 通但应用连不上立刻查客户端是否启用了 SSL 强制MySQL 8.0 默认 require_secure_transportON而你的连接串没加 ?ssl-modeDISABLED 或对应 CA 配置云环境特别注意安全组/NACL 是否放行了入方向 3306且源 IP 是实际出口 IP不是 NAT 网关内网地址连接池 keep-alive 和 validationQuery 怎么配才不踩坑连接池本身会缓存连接但 MySQL 服务端默认 8 小时就主动断开空闲连接wait_timeout28800池子却不知道——结果取出来就是“已经断掉的连接”报 Communications link failure。使用场景Spring Boot HikariCP、Druid、Tomcat JDBC Pool 等主流池都面临同样问题HikariCP 必须设 connection-test-querySELECT 1MySQL 5.7或 connection-test-querySELECT 1 connection-init-sqlSET NAMES utf8mb4避免初始化失败关键参数validation-timeout3000毫秒、keepalive-time30000Hikari 3.2.1 才支持每 30 秒发一次 SELECT 1 检活Druid 要开 testWhileIdletrue timeBetweenEvictionRunsMillis60000否则空闲连接超时后仍被返回给业务线程MySQL 服务端 timeout 参数哪些真影响连接存活别一看到 “timeout” 就全调大。真正决定连接是否被服务端单方面断开的只有两个参数 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。