JDBC连接Mysql长时间无动作连接失效

2023-11-05

错误场景介绍

做的有一个项目使用JDBC手动创建Connection实现了一个简单的自定义数据库连接池,用来支持Canal解析数据库Binlog指定业务库的插入修改SQL来进行数据库分表备份(按照月份)操作.
但是发现当一个一段时间(较长)没有进行数据库操作时,连接都失效了,导致SQL执行失败失效提示为No operations allowed after connection closed

查明原因

经过搜索发现这个问题是由于Mysql默认一个已创建的长连接28800秒(八小时)内没有任何动作则会断开连接,该值对应参数为wait_timeout.当超时时间内有执行动作则会重新计时

查验

查询Mysql超时连接时长命令show global variables like’wait_timeout’查看当前设置的超时断开连接时长.

将其改为10,本地服务运行功能发现重现了No operations allowed after connection closed错误,即确实是连接超时失效

解决方法

1. 修改Mysql配置

该方法不能根治这个问题,因为不能确认服务空闲时长而精确设置timeout并且还会造成多余连接长时间未断开而影响性能,所以不建议使用.建议在代码层面进行解决

  1. 通过set global wait_timeout=time(秒)来修改最长连接等待超时时间,但是这样设置当Mysql重启失效
  2. 可以通过修改my.ini文件永久改动超时时间,如下配置
interactive_timeout=28800000
wait_timeout=28800000

2. 连接丢弃重新创建连接

使用conn.isValid(int timeout)(秒)判断是否失效返回true表示连接有效,返回false表示连接失效.当失效时则重新获取一个数据库连接即可,之前的对象由于引用丢失会被回收掉.

3. 增加自动重连选项

在URL最后添加autoReconnect=true参数,jdbc:mysql://hostaddress:3306/xhb?autoReconnect=true.我这里对这个没有效果,可能是对框架连接池有用.

4. 定时执行一个动作进行超时时间刷新

比如默认时间是八小时,则每七小时对连接执行一次select 1语句来刷新该连接在数据库的超时等待时长

也可以1 2 4一起使用,来防止突然一个流量静默期间后突发流量高峰而导致获取连接不及时

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

JDBC连接Mysql长时间无动作连接失效 的相关文章

随机推荐

  • html2Canvas + jsPDF vue生成pdf(A4纵向或A3横向)

    1 第一个 将页面html转换成图片 npm install save html2canvas 第二个 将图片生成pdf npm install jspdf save 2 创建名称 htmlToPdf js 页面导出为pdf格式 impor
  • SpringBoot使用Swagger配置API接口文档

    概述 Swagger是一个用于设计 构建和文档化 RESTful API 的开源框架 它提供了一组工具 使得开发人员能够更轻松地定义 描述和测试API接口 具体来说 Swagger包含以下几个核心组件 Swagger规范 Swagger S
  • LaTeX Error: Unicode character解决方法

    由tex编译到pdf时报错信息如下 解决办法如下 第一步 在引用包的位置中添加 usepackage CJKutf8 并且在 begin document 下方添加 begin CJK UTF8 gbsn 第二步 在 end documen
  • torch将多个tensor张量合并为一个张量,只提高迷你批次的纬度

    在自己写pytorch的数据集加载函数时 会遇到一个问题 如何将多张图片张量合并到一起 提升迷你批次batch的纬度 但是不影响图片的大小和RGB通道数 解决方法 函数torch cat inputs dim 这里的inputs是你要合并的
  • 华为OD题目: 核酸检测人员安排

    核酸检测人员安排 参考 https blog csdn net qq 34465338 article details 128648074 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 在系统 网络均正常的情况下组织核酸
  • idea 使用 git 回退到某个历史版本

    idea 使用 git 回退到某个历史版本 有时我们提交git错了 想回滚 怎么办 一 用idea工具 1 idea中打开Terminal 输入 git log 显示历史提交记录 或者 右击项目 gt Git gt Show History
  • MongoDB $unwind保留空数组

    MongoDB的aggregate的pipeline中 有 unwind操作符 该操作符用于延展某一个数组类型的元素 作用与Python中的flatten 拍平 类似 但是在实际使用中 unwind 有一个非常明显的问题 就是如果要unwi
  • H.264码流分析仪

    目录 一 实验内容 二 实验结果 1 SPS profile idc level idc eq parameter set id log2 max frame num minus4 pic order cnt type log2 max p
  • @ApiModelProperty注解

    ApiModelProperty 用于方法 字段 表示对model属性的说明或者数据操作更改 value 字段说明 name 重写属性名字 dataType 重写属性类型 required 是否必填 example 举例说明 hidden
  • 电脑视频显示服务器运行失败,抖音直播伴侣提示:服务器终点无法运行操作或者创建视频源失败请重试解决方法视频教程...

    1 抖音直播伴侣多开 如果提示 服务器终点无法运行操作 或者创建视频源失败 请重试 多开插件一般是操作系统不兼容 要换操作系统 或者安装虚拟机 我推荐的操作系统是WIN10 64位 我拿了100多个操作系统测试 最终这个版本的稳定 可用 大
  • 图像分割套件PaddleSeg全面解析(四)数据预处理

    本部分主要介绍一下数据增强部分 PaddleSeg套件里把数据增强部分都定义在transforms里面 与Pytorch比较类似 这样就把一些基本的图像处理方法 缩放 归一化等 和数据增强 随机裁剪 翻转 颜色抖动 统一了 自己新增的数据增
  • 编程15年40岁程序员的我终于在压力下被迫转行了

    本人今年40岁多了 中山大学计算机小硕 已经从事it工作15年多 最后一次工作是2017年 创业 互联网教育方向 2020年失败关闭公司 创业失败后 在家沉淀了几个月 然后决定再次找工作 前几年频繁接到猎头电话的我 海投了不少公司 结果都渺
  • Linux网络协议栈

    TCP与UDP区别 区别一 是否基于连接 TCP是面向连接的协议 而UDP是无连接的协议 即TCP面向连接 UDP是无连接的 即发送数据之前不需要建立连接 区别二 可靠性 和 有序性 区别 TCP 提供交付保证 Tcp通过校验和 重传控制
  • mysql 控制每次批量插入5w条记录思路

    http blog csdn net jianjun4833 article details 71170113 由于业务中使用到word分词 所以数据量比较大 需要把分出来的结果插入到数据库 每次插入1条的话 非常慢 所以使用批量插入 具体
  • 【OpenCV】中copyto()函数的使用方法理解

    使用copyTo函数可以得到一个复制的矩阵 A copyTo B 就可以得到和A一模一样的矩阵B 当然需要事先声明B copyTo还有一个重构函数copyTo B MASK 意思是可以得到一个附加掩膜MASK的矩阵B 3 加载掩模 必须是灰
  • 有趣的python小程序-分贝测量

    声音是我们日常生活中非常重要的一种感官刺激 但长期受到高分贝噪音的干扰会对人体产生很大的伤害 因此 分贝 decibel dB 测量成为了一个重要的领域 其可以用来衡量声音的强度和能量 在本篇博客中 我们将介绍如何使用 Python 编写一
  • Mysql最常用时间格式转化

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 1 Date转字符串 2 字符串转Date 3 上述转化的字符串格式有许多种 常见的几种如下 总结 前言 主要介绍了Mysql中最常用的两个时间格式转化函数
  • 最简单的打印数组的方式

    注意 输出数组 不用 System out println arr toString System out println arr 以上两种方法输出的是数组的地址 下面这种方法输出的才是数组的内容 System out println Ar
  • 数据库课程设计 医院管理系统 SQL

    文章目录 一 背景资料 需求分析 二 功能模块 三 功能设计说明书 要求详细描述各模块功能 给出模块结构图 SC图 四 数据库设计 1 概念模型 图 2 逻辑模型 五 建表以及sql语句 1 病人表 2 医生表 3 科室表 4 病房表 六
  • JDBC连接Mysql长时间无动作连接失效

    错误场景介绍 做的有一个项目使用JDBC手动创建Connection实现了一个简单的自定义数据库连接池 用来支持Canal解析数据库Binlog指定业务库的插入修改SQL来进行数据库分表备份 按照月份 操作 但是发现当一个一段时间 较长 没