一次 MySQL SQL 超时,根因是网卡 MTU 被改成了 8192
客户环境出现 MySQL 执行 SQL 超时:连接可以建立,简单查询大多正常,但应用复用同一个数据库连接执行多次查询后,会逐渐卡住并最终超时。 相同查询直接在 Navicat 中执行却是正常的。一开始容易怀疑慢 SQL、连接池或数据库负载,但数据库侧没有对应的慢查询和异常。检查网络配置后发现,客户将服务器网卡 MTU 从默认的 1500 改成了 8192。 根因 8192 属于巨帧配置。只有服务器、交换机、路由设备和对端链路都支持相同或更大的 MTU 时,巨帧才能正常工作。 这次链路中仍存在 1500 MTU 的设备。较大的 MySQL 响应包无法被路径正确转发,造成部分数据包丢失;TCP 重传后,应用层最终表现为 SQL 执行超时。 这也解释了为什么: Navicat 的单次查询正常 同一数据库连接连续执行多次查询后更容易超时 返回结果较大时更容易触发 数据库本身没有明显异常 处理 将网卡 MTU 恢复为 1500 后,超时现象消失。 巨帧不是单机优化项。调整 MTU 前,应确认网络路径全链路支持,并在变更后覆盖长连接、多次查询和大结果集等实际业务场景。遇到“单次查询正常、复用连接后超时”的问题时,除了查 SQL 和数据库,也应检查 MTU 是否一致。