mysql: using the Connector/J connection property ‘autoReconnect=true‘ to avoid this problem

2023-11-06

报错信息:

com.mysql.cj.jdbc.exceptions.CommunicationsException: The last packet successfully received from the server was 1,129,144 milliseconds ago.
 The last packet sent successfully to the server was 1,129,153 milliseconds ago. is longer than the server configured value of 'wait_timeout'. 
 You should consider either expiring and/or testing connection validity before use in your application,
  increasing the server configured values for client timeouts, 
  or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

报错说明:mysql连接闲置时间超过配置的:wait_timeout,但是连接池还去用那个连接,所以就报连接已经过时。
排查过程:

1、 查看wait_timeout 配置

show variables like '%timeout%';

在这里插入图片描述
600秒,报错信息是:1,129,144毫秒之前,1129秒之前,在这1000秒之前连接已经过时了,你的连接池中,要是有多个连接,这个是偶然现象,因为有别的连接不一定过时。

方案1:
1、修改 wait_timeout 的值大一些,一般不这么做,这里记录下来修改命令:修改全局:set global wait_timeout=你的值;,修改会话:set session wait_timeout=你的值

方案2:
修改my.cnf:

[mysqld]

wait_timeout=31536000

interactive_timeout=31536000

重启生效。

方案3:
设置autoConnecttrue,不过该方案只对4之前的版本有效

方案4:
依赖于连接池:
我用的是:druid,yml中配置参数:test-on-borrow: true , 用的时候先检查
这里给出各连接池配置说明:

druid配置

推荐配置:

initialSize	 3	 初始化配置
 minIdle	 3	 最小连接数
 maxActive	 15	 最大连接数
 maxWait	 5000	 获取连接超时时间(单位:ms)
 timeBetweenEvictionRunsMillis	 90000	 连接有效性检测时间(单位:ms)
 testOnBorrow 	 false	 获取连接检测
 testOnReturn 	 false	 归还连接检测
 minEvictableIdleTimeMillis	 1800000	 最大空闲时间(单位ms)
 testWhileIdle	 true	 在获取连接后,确定是否要进行连接空间时间的检查

配置说明:

       1:minEvictableIdleTimeMillis(最大空闲时间):默认为30分钟,配置里面不进行设置。

       2:testOnBorrow ,testOnReturn 默认为关闭,可以设置为不配置。

       3:testWhileIdle(在获取连接后,确定是否要进行连接空闲时间的检查)。默认为true。配置里面不再进行设置。

流程说明:

      1:在第一次调用connection的时候,才会进行 initialSize的初始化。

      2:心跳检测时间线程,会休眠timeBetweenEvictionRunsMillis时间,然后只对(没有borrow的线程 减去 minIdle)的线程进行检查,如果空闲时间大于minEvictableIdleTimeMillis则进行close。

      3:testWhileIdle必须设置为true,在获取到连接后,先检查testOnBorrow,然后再判定testwhileIdle,如果连接空闲时间大于timeBetweenEvictionRunsMillis,则会进行心跳检测。

      4:不需要配置validationQuery,如果不配置的情况下会走ping命令,性能更高。

      5:连接保存在数组里面,获取连接的时候,获取数组的最后一位。在timeBetweenEvictionRunsMillis时是从前往后进行检查连接的有效性。

dbcp配置

推荐配置:

 initialSize	 3	 初始化配置
 minIdle	 3	 最小连接数
 maxIdle	 15	 最大空闲连接
 
maxTotal 15	 最大连接数
 maxWaitMillis	 5000	 获取连接超时时间(单位ms)
 timeBetweenEvictionRunsMillis	 90000	 心跳检测时间(单位ms)
 minEvictableIdleTimeMillis	 1800000	 最大空闲时间(单位ms)
 testOnBorrow	 FALSE	 获取连接检测
 testOnReturn	 FALSE	 归还连接检测
 numTestsPerEvictionRun	 -1	 空闲连接检查的个数
 testWhileIdle	 TRUE	 是否开启对空闲连接的检查

配置说明:

     1:关于maxidle和maxTotal尽量保持一致。

     2:numTestsPerEvictionRun 设置为-1,代表对所有的连接均进行检查。默认值为3。-1代表对全部idle的连接检查有效性。 否则有可能造成部分连接的有效性未进行检查。

     3:testWhileIdle 也必须为true,代表需要检查有效性。

     4:minEvictableIdleTimeMillis默认值为30分钟,可以不用进行设置。

    5:testOnReturn默认值为false,可以不用设置。但是testOnBorrow必须进行设置为false,默认值为true。

    6:validationQuery不配置默认走ping命令

流程说明:

 1:在第一次调用connection的时候,才会进行 initialSize的初始化。

 2:不需要配置validationQuery,如果不配置的情况下会走ping命令,性能更高。

 3:连接保存在LinkedBlockingDeque 中。来做并发的控制。

 4:后端会有一个定时任务,间隔为timeBetweenEvictionRunsMillis,先确定需要对多少线程进行检测(numTestsPerEvictionRun控制),然后判定是否超过minEvictableIdleTimeMillis,如果超过则close掉。没有超过,则判定testWhileIdle为true的话,进行心跳检查。如果检查失败则关闭连接。

 5:在return连接的时候会判定maxIdle,如果当前空闲连接是否大于maxIdle,则会关闭掉连接。

c3p0配置

推荐配置:

 initialPoolSize	 3	 初始化配置
 minPoolSize	 3	 最小连接数
 maxPoolSize	 15	 最大连接数
 acquireIncrement	 1	 每次获取的个数
 checkoutTimeout	 5000	 获取连接超时时间(单位ms)
 idleConnectionTestPeriod	 90	 心跳检测时间(单位 s)
 maxIdleTime	 1800	 最大空闲时间(单位 s)
 testConnectionOnCheckout	 FALSE	 获取连接检测
 testConnectionOnCheckin	 FALSE	 归还连接检测
 
numHelperThreads 	 1	  

配置说明:

     1:testConnectionOnCheckout和testConnectionOnCheckin默认为false,可不用配置

    2:preferredTestQuery不用配置,默认走ping命令。

    3:numHelperThreads 默认是开启3个线程。如果数据源较多,这里会存在较多线程。 这里设置为1,避免线程较多的情况。

流程说明:

  1:在第一次调用connection的时候,才会进行 initialPoolSize的初始化。

  2:在进行心跳检测的时候,会对所有的空闲连接进行心跳检测。如果发现总连接小于最小连接数,则会创建连接,保持最小的连接数。

数据库连接池配置参考:https://blog.csdn.net/hetaohappy/article/details/51861015

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql: using the Connector/J connection property ‘autoReconnect=true‘ to avoid this problem 的相关文章

随机推荐

  • 《C++API设计》阅读笔记1

    1 API简介 API Application Programing Interface 提供了对某个问题的抽象 以及客户与解决改问题的软件组件之间进行交互的方式 组件本身通常以软件类库形式分发 它们可以在多个应用程序中使用 概括说 API
  • ROS机器人构建和深度学习应用

    机器人操作系统是机器人研究和公司建模 模拟和原型机器人使用最广泛的软件框架之一 将您的 ROS 知识应用于实际机器人技术比人们意识到的要困难得多 但是这个标题将立即为您提供创建自己的机器人技术所需的一切 包含超过 14 个 ROS 机器人项
  • python中input()函数详解

    1 input 函数赋值后数据在python内部的类型 if name main a input print type a b input print type b c a b print c print type c 输入及输出 从结果可
  • 解决Anaconda环境未激活的warning

    在cmd内键入python之后会报Warning 显示Anaconda环境未激活 使用如下命令激活 conda activate base 这里base指环境名 默认为base 查看环境名可以用如下命令 conda info envs
  • Oracle常见问题定位方法

    Oracle在安装时无法正常显示出安装界面 现象 在vnc的界面中 安装时提示 Can t connect to X11 window server using 1 0 as the value of the DISPLAY variabl
  • 使用注解开发springmvc

    第三步 pom xml文件引入相关依赖 主要有Spring框架核心库 Spring MVC servlet JSTL等 第四步 配置web xml 映射路径 不要为 会404 第六步 创建Controller RequestMapping
  • 某宝滑块ua特征研究

    从137版本开始某宝新加了x 82类型滑块 和之前无感或者滑动验证js 类似 不过浏览器特征检测 反调试干扰都增加了不少 变得更有难度 下面稍微讲下研究过程 首先处理大量三目运算符 这个没啥好办法 博主用ast处理的 类似下面这种 单步调试
  • 贪心算法求解TSP问题(python)

    这里使用贪心算法求解TSP问题的python版本 dist 为距离矩阵 start index 为起始位置 def tsp quick dist list start index int sum distance seq result n
  • 用C++做一颗会跳动的爱心

    先来看看效果 程序描述 程序先以较慢的速度画一个大爱心 之后跳动的心其实从视觉上看就是一大一小两个心相互切换 但是要调整一下大小爱心变化时的时间间隔 代码主要是通过设置两个函数 利用cls来清屏 重复打印大心和小心 并设置颜色为红色 详细代
  • php公众号获取code,微信公众号获取code

    methods getCode 非静默授权 第一次有弹框 this code var local window location href 获取页面url var appid wx65adcf075369 this code this ge
  • 使用LFM(Latent factor model)隐语义模型进行Top-N推荐

    最近在拜读项亮博士的 推荐系统实践 系统的学习一下推荐系统的相关知识 今天学习了其中的隐语义模型在Top N推荐中的应用 在此做一个总结 隐语义模型LFM和LSI LDA Topic Model其实都属于隐含语义分析技术 是一类概念 他们在
  • Windows 下如何安装配置Snort视频教程

    Windows 下如何安装配置Snort视频教程 第一步 http www tudou com programs view UUbIQCng360 第二部 http www tudou com programs view NqcPETQk2
  • 【算法】算法学习三:递归算法 & 栈

    文章目录 一 递归的含义 二 基线条件和递归条件 三 栈 3 1 什么是栈 3 2 调用栈 3 3 递归调用栈 一 递归的含义 递归算法是一种解决问题的方法 其中函数在执行过程中调用自身 它通过将一个大问题拆分成一个或多个相似的子问题 并逐
  • 数据倾斜2

    数据倾斜的原因和解决方案 MapReduce简介 MapReduce是面向大数据并行处理的计算模型 框架和平台 它隐含了以下三层含义 1 MapReduce是一个基于集群的高性能并行计算平台 Cluster Infrastructure 它
  • 文件上传到Linux服务器常用方法

    本文介绍几种常见的方法 把文件上传到Linux服务器中 常见有使用 scp命令 xshell软件里的xftp程序 U盘挂载 服务器自带的lrzsz程序 一 scp使用说明 1 把本机的文件传给目的服务器 linux linux scp ge
  • 修改Windows的git bash的主题(样式)

    背景 Windows的git bash页面默认是黑白的 如何改成别的颜色 PS 我一直不太喜欢黑色主题的软件 有几个原因 大多软件是白色的 看久了黑色切换到其他软件的时候眼睛不适应 字体等对比不强 我真的不知道为啥这么多人喜欢IDEA黑色主
  • 数组类型方法

    数组类型方法 1 concat 创建一个新数组 将array与任何数组 或 值连接在一起 let arr 1 2 3 4 let arr2 9 let arr3 arr concat arr2 console log arr3 1 2 3
  • jQuery操作类样式(增加、移除、判断)

    一 增加和移除一个或多个类样式的方法 1 增加一个类样式的方法 1 当前需要增加样式的元素 addClass cls 注意在addClass方法中类样式的名字前面没有点 2 增加多个类样式的方法 1 第一种写法 当前需要增加样式的元素 ad
  • 最新Landsat数据下载教程

    目前 国内下载Landsat数据可以通过USGS网站或者地理空间数据云下载 由于USGS对Landsat数据进行了修改 地理空间数据云目前只存储有2017年5月之前的数据 本文只介绍从USGS网站下载Landsat数据 USGS有两个网站可
  • mysql: using the Connector/J connection property ‘autoReconnect=true‘ to avoid this problem

    报错信息 com mysql cj jdbc exceptions CommunicationsException The last packet successfully received from the server was 1 12