首页 / MYSQL / mysql 8小时问题
mysql 8小时问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql 8小时问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2219字,纯文字阅读大概需要4分钟。
内容图文
![mysql 8小时问题](/upload/InfoBanner/zyjiaocheng/877/432a31bd9308426ca6c4c81e0cfb7bb2.jpg)
MySQL服务器所支持的最大连接数是有上限的,因为每个连接的建立都会消耗内存,因此我们希望客户端在连接到MySQL Server处理完相应的操作后,应该断开连接并释放占用的内存。如果你的MySQL Server有大量的闲置连接,他们不仅会白白消耗内存,而且如果连接一直在累加而不断开,最终肯定会达到MySQL Server的连接上限数,这会报'too many connections'的错误。所以mysql在一定时长后默认断开连接并且释放掉sleep的连接线程,已保证mysql server不会出现连接数过满的情况。而tomcat内置/c3p0/dbcp连接池则以为该连接依然有效,这种情况下,如何客户端代码向连接池获取连接,连接池就会把失效的连接返回给客户端代码,客户端代码在使用该失效的连接后就会抛出上面的异常。
mysql默认8小时数据库断开的设置参数如下:
1)interactive_timeout:
参数含义:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
参数默认值:28800秒(8小时)
(2)wait_timeout:
参数含义:服务器关闭非交互连接之前等待活动的秒数。
在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。
参数默认值:28800秒(8小时)
ps:如果在配置文件my.cnf中只设置参数wait_timeout=100,则重启服务器后进入,执行:Mysql> show variables like “%timeout%”;会发现参数设置并未生效,仍然为28800(即默认的8个小时)。查询资料后,要同时设置interactive_timeout和wait_timeout才会生效。
复现此问题很容易:设置端口连接为60s即可,然后等待2分钟后在调同样的接口并会出现。
解决思路:
1.既然连接8小时会断开连接,可以设置更长一些比如24小时?不推荐,需要修改mysql自身的配置
2.在数据库连接的URL后面加上autoReconnect=true,据说是mysql版本5.1之前有效
3.修改数据源的连接池参数,springboot的修改参数如下
spring.datasource.mysql.max-idle: '10' spring.datasource.mysql.max-wait: '10000' spring.datasource.mysql.min-idle: '5' spring.datasource.mysql.initial-size: '5'
#mysql的此时连接语句 spring.datasource.mysql.validation-query: SELECT 1
#当从连接池借用连接时,是否测试该连接 spring.datasource.mysql.test-on-borrow: 'false'
#当连接空闲时,是否执行连接测试 spring.datasource.mysql.test-while-idle: 'true'
#指定空闲连接检查、废弃连接清理、空闲连接池大小调整之间的操作时间间隔 spring.datasource.mysql.time-between-eviction-runs-millis: '18800'
https://blog.csdn.net/zhanxiaoyun1/article/details/79654668
内容总结
以上是互联网集市为您收集整理的mysql 8小时问题全部内容,希望文章能够帮你解决mysql 8小时问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。