空闲超时:网站因数据库连接长时间空闲被断开怎么办?
问题原因
- MySQL配置:
wait_timeout参数过小(默认8小时),自动关闭空闲连接。 - 连接池缺陷:PHP/Java应用未启用连接池,或池化策略不合理。
解决方法
| 优化方向 | 具体措施 |
|---|---|
| 调整超时时间 | 修改my.cnf:wait_timeout=28800(8小时),interactive_timeout=28800。 |
| 连接池配置 | PHP PDO启用ATTR_PERSISTENT,Java用HikariCP设置idleTimeout=600000。 |
| 心跳保活 | 应用层定时执行简单查询(如SELECT 1)维持连接。 |
| ORM框架优化 | Laravel修改.env的DB_RECONNECT=true,Spring Boot配置testOnBorrow。 |
| 错误重试机制 | 捕获COM_MYSQL_SERVER_GONE_ERROR后自动重连。 |

更新时间:2025-07-22 16:25:11
下一篇:
