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'

详细的参数配置如下

mysql做心跳_mysql 心跳检测相关推荐

  1. mysql做前端_MySQL 还可以这样做

    多个字段唯一性如何处理? 情景 有张表,表里有多个字段需要唯一,不能重复,否则就是重复数据,插不进去 传统做法 直接给多个字段直接加唯一索引,简单粗暴 现在做法 新增一个字段,这个字段加唯一索引,这样 ...

  2. mysql做四则运算_MySQL字符串进行四则运算以及比较

    在mysql当中,字符串类型间进行加减乘除运算的时候,会截取字符串以数字开头的那一部分数字进行运算,如果字符串前面没有数字,那么就只能截取的数值为0,那么进行加减的时候结果都是0,进行乘除的时候结果都 ...

  3. 【STM32项目】- 人体检测(体温、心率、心跳、跌倒检测)

    STM32人体检测(体温.心率.心跳.跌倒检测)+zigbee 笔者前言 在闲鱼有缘结识的一个哥们,帮助做的基于STM32人体检测系统,我负责硬件程序开发设计,哥们负责客户端服务器微信程序的实现,人体 ...

  4. Socket心跳包异常检测的C语言实现,服务器与客户端代码案例

    在Socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能较大.本文实现的是由客户端给服务器发送心跳包,服务器不必返回应答包,而是通过判断客户在线 ...

  5. 华为服务器显示红色的心跳,服务器心跳检测

    服务器心跳检测 内容精选 换一换 检测IDE Daemon与Host之间的心跳,用于检测Host侧的服务器是否在运行.以HwHiAiUser用户登录Host侧服务器.执行命令,检测IDE Daemon ...

  6. 心跳包(检测不可检测断线)

    心跳包(检测不可检测断线) 作者 ricky5266 @ 2006-01-17 09:40:38 一般是用来判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段 ...

  7. mysql 全文检索 教程_mysql怎么做全文检索

    mysql做全文检索的方法: 1.自然语言检索:IN NATURAL LANGUAGE MODE 2.布尔检索:IN BOOLEAN MODE 剔除一半匹配行以上都有的词,譬如说,每个行都有this这 ...

  8. 华为服务器显示红色的心跳,服务器心跳检查

    服务器心跳检查 内容精选 换一换 以IDE Daemon服务器的时间为准,将Host侧服务器的时间与IDE Daemon服务器的时间同步.以HwHiAiUser用户登录Host侧服务器.执行命令,检查 ...

  9. mysql explain 索引_MySql中Explain详解与索引最佳实践

    使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的.分析你的查询语句或是结构的性能瓶颈 下面是使用 explain 的例子: 在 select 语句之 ...

最新文章

  1. 【强烈推荐】清华大学刘洋老师【浅谈研究生学位论文选题方法】讲座
  2. Loj #3111. 「SDOI2019」染色
  3. 串行通信的波特率高速和低速区别
  4. Upsync:微博开源基于Nginx容器动态流量管理方案
  5. 求一个张量的梯度_张量流中离散策略梯度的最小工作示例2 0
  6. 渗透测试入门11之一次完整的渗透测试实验
  7. 本田da屏怎么进wince系统_谁说思域要停产的?打脸来得不是一般的快 第十一代本田思域Prototype...
  8. 反转?MIT女博士遭质疑:代码贡献太少,黑洞照片功臣另有其人
  9. C++ std::lock_guard 自动加锁、释放锁 原理
  10. php redis 是什么意思,redis协议是什么意思
  11. 关于最小二乘法快速计算公式汇总
  12. 息县装修“茶几的选择”
  13. 【多元统计分析】Python实现对应分析
  14. php tp5生成条形码,thinkphp5 + barcode 生成条形码的方法
  15. ps2019安装破解
  16. android小动画之Running Pig
  17. MATLAB plot绘图颜色及配色
  18. DVD刻录工具(anymp4 dvd creator 7)pjb v7.2.58
  19. bzoj 3007 拯救小云公主
  20. NIST《零信任安全架构标准》简单解读

热门文章

  1. Oracle 关于身份证校验规则详细说明(附有代码复制可执行)
  2. java计算机毕业设计分享网站MyBatis+系统+LW文档+源码+调试部署
  3. VS2017下使用C#第三方控件Krypton
  4. 只有自律的人才配拥有真正的自由!
  5. 思科:路由器控制台登录密码
  6. 大面积皮肤烧伤后留下的增生疤痕可以完全修复吗
  7. 节省 75%人工处理,行业龙头日丰 集团如何落地精益化生产
  8. 为什么要把js放在页面底部,css放在顶部
  9. ABAP自动生成程序
  10. 【经典语录】摔跤吧!爸爸