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. Xamarin Visual Studio提示找不到AssemblyAttributes.cs文件
  2. 皮一皮:我真的没买这么多...
  3. ms sql 聚合事例
  4. VTK:可视化之AssignCellColorsFromLUT
  5. 一天干掉一只Monkey计划(二)——热流扰动,径向模糊
  6. 基于GitBook框架搭建技术文档平台
  7. 目标检测无痛涨点之 Generalized Focal Loss V2
  8. 简易 MVC框架 弃坑
  9. Js调用游览器的外部方法(设首页,收藏夹等游览器操作)
  10. mysql8连接java_JAVA连接MYSQL8.0问题
  11. WebRTC桌面共享手动停止
  12. 【SandQuant 量化投资】哈里·马科维茨:投资组合的选择
  13. SCCM 2012 R2部署,安装SCCM(四)
  14. 关于基金知识的一些整理
  15. 简述空串和空格串(或称空格符串)的区别。
  16. 携程笔试__界面测试用例
  17. Zabbix 3.4配置监控项及监控Linux、Windows客户端
  18. Python Flask Web教程006:Flask HTTP方法
  19. Linux学习(入门)
  20. 游戏美术和策划的要求

热门文章

  1. AD开发用户(User)属性完全手册(AD User)
  2. centos乱码问题(centos终端中文乱码)
  3. 智慧校园信息化管理系统的方案设计与实施
  4. wps文件丢失如何恢复?找回只需要用到一招?
  5. python-docx文档格式修改
  6. 港股ETF可以t+0交易吗?
  7. SphereTrace中Hit Result里的Location和ImpactPoint
  8. 利用JA3和JA3S识别加密数据流量
  9. 2018.10.26 酷狗音乐校招前端一面经历(转)
  10. 计算机专业英语主要句型及翻译技巧,常见五种句型英语翻译技巧