wait_timeout 是 MySQL 服务端断开空闲连接的超时参数,仅作用于非交互式连接;修改后新连接生效,已存在连接沿用旧值;需配合连接池的空闲检测(如 HikariCP 的 idle-timeout)协同配置,否则仍会因时间差导致“MySQL server has gone away”。wait_timeout 是什么,改它真能断开空闲连接?是的,wait_timeout 控制的是 MySQL 服务端对**空闲连接**的等待上限。一旦客户端没发任何请求(包括心跳),超过这个秒数,MySQL 就主动 KILL 连接。但注意:它只影响非交互式连接(比如应用服务器用 JDBC/ORM 建的连接),交互式连接(如 mysql 命令行)走的是 interactive_timeout,俩参数默认值还可能不同。常见错误现象:MySQL server has gone away 错误频繁出现,但日志里查不到明显 crash 或网络中断,大概率是连接空闲太久被服务端单方面断开了修改后不会立即生效所有连接——已建立的连接仍按旧值计时;新连接才用新配置别只调大不设限:设成 24 小时(86400)看似稳妥,但会堆积大量僵尸连接,拖慢 SHOW PROCESSLIST、增加线程开销怎么改 wait_timeout:会话级、全局级、配置文件级的区别三种改法作用范围和持久性完全不同,选错等于白改。会话级(临时):SET SESSION wait_timeout = 300; —— 只影响当前连接,退出重连就失效,适合调试验证全局级(重启前有效):SET GLOBAL wait_timeout = 300; —— 影响后续所有新连接,但 MySQL 重启后恢复默认值(通常 28800 秒)配置文件级(永久):在 my.cnf 的 [mysqld] 段落下加一行 wait_timeout = 300,然后重启 MySQL。这是生产环境唯一推荐的方式注意:SET GLOBAL 需要 SUPER 权限;配置文件修改后必须重启,光 reload 不生效Java 应用连不上?光调 wait_timeout 不够,还得看连接池很多 Java 项目用 HikariCP、Druid 等连接池,它们自己也管连接生命周期。如果池子没配检测机制,即使 MySQL 断了,应用还在用“假连接”,照样报错。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
mysql如何设置连接超时断开_修改wait_timeout参数配置