空闲超时:网站因数据库连接长时间空闲被断开怎么办?
问题原因
- 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
下一篇: