Mysql 参数autoReconnect=true 解决8小时连接失效

2023-11-08

1. 即使在创建Mysql时url中加入了autoReconnect=true参数,一但这个连接两次访问数据库的时间超出了服务器端wait_timeout的时间限制,还是会CommunicationsException: The last packet successfully received from the server was xxx milliseconds ago.
2. 服务器端的参数可以用
show global variables like 'wait_timeout';
set global wait_timeout=10;
来进行设置,但是wait_timeout值不应该设的太高.
3. 较好的策略是对处于idle状态的connection定时发送一个sql,来刷新服务器上的时间戳.这可以使用c3p0r的连接池.http://bzhang.iteye.com/blog/321832
4. 对于tomcat的server.xml中使用的连接池,http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html,http://commons.apache.org/dbcp/configuration.html使用DBCP的连接池可以采用
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8"
username="root" password="test" maxActive="500" maxIdle="10"
maxWait="-1" timeBetweenEvictionRunsMillis="10000" minEvictableIdleTimeMillis="10000" />
4.1 设置validationQuery,这样每次borrow(默认为开启)时会通过这个sql校验连接的有效性,但是增加了时间.
4.2 设置timeBetweenEvictionRunsMillis="10000" minEvictableIdleTimeMillis="10000" 依赖evictor thread线程来把超时的连接关闭.
4.3 设置testWhileIdle="true" timeBetweenEvictionRunsMillis="10000" validationQuery="select 1" 使得定时去用query检测处于idle状态的连接,也就刷新了服务器端的时间.

5.每次提交的最大packet大小
show global variables like 'max_allowed_packet';
set global max_allowed_packet=1024*1024;

6. SQLyog 中连接参数的设置
6.1 在SQLyog中的设置 set autocommit=0,这样当前连接的自动提交为false,可以控制事务了.
6.2 begin; 事务开始
6.3 select * from test where 1=1 and id =1 for update;这样就把选到的记录行锁上了,再开一个SQLyog,也执行以上相同的操作,就会一直wait在那里.
6.4 commit; 提交
6.5 rollback; 回滚
6.6 set autocommit=0;后应该加上
set transaction isolation level read committed;
这样其它客户端就能看到commit的数据,
疑问:
如果不设置set transaction isolation level read committed;如果两个客户端都select 相同的数据,一个客户端修改然后提交,另一个客户端不提交当前事务的前提下,去执行select ,取不到另一客户端提交的数据,不知道SQLyog默认的事务级别是什么样的.

7. SQLyog中查看mysql的状态,show global variables like '%lock%'; 是个好方法.对于事务锁(例如for update)报Lock wait timeout exceeded ,只能通过修改my.ini文件innodb_lock_wait_timeout = 100;才能生效.

8. linux下修改用户密码 mysqladmin -u root password "new_pass"
====================================================================
使用Connector/J连接MySQL数据库,程序运行较长时间后就会报以下错误:

Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was *** millisecond ago。

其中错误还会提示你修改wait_timeout或是使用Connector/J的autoReconnect属性避免该错误。

后来查了一些资料,才发现遇到这个问题的人还真不少,大部分都是使用连接池方式时才会出现这个问题,短连接应该很难出现这个问题。这个问题的原因:

MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。

1.按照错误的提示,可以在JDBC URL中使用autoReconnect属性,实际测试时使用了autoReconnect=true&failOverReadOnly=false,不过并未起作用,使用的是5.1版本,可能真像网上所说的只对4之前的版本有效。

2.没办法,只能修改MySQL的参数了,wait_timeout最大为31536000即1年,在my.cnf中加入:

[mysqld]

wait_timeout=31536000

interactive_timeout=31536000

重启生效,需要同时修改这两个参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql 参数autoReconnect=true 解决8小时连接失效 的相关文章

  • 我需要在 Spring 中检查每个控制器中的有效会话吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设在 Spring Mvc 的 Web 应用程序中 我们是否需要检查每个控制器或 jsps 中的有效会话 我该如何解决 MVC 中的
  • manifest.mf 文件的附加内容的约定?

    Java JAR 中的 MANIFEST MF 文件是否有任何超出 MANIFEST MF 约定的约定 JAR规范 http download oracle com javase 1 4 2 docs guide jar jar html
  • IntelliJ IDEA 创建的 JAR 文件无法运行

    我在 IntelliJ 中编写了一个跨越几个类的程序 当我在 IDE 中测试它时它运行良好 但是 每当我按照教程将项目制作成 jar 可执行文件时 它就不会运行 双击 out 文件夹中的文件时 该文件不会运行 并显示 无法启动 Java J
  • CXF Swagger2功能添加安全定义

    我想使用 org apache cxf jaxrs swagger Swagger2Feature 将安全定义添加到我的其余服务中 但是我看不到任何相关方法或任何有关如何执行此操作的资源 下面是我想使用 swagger2feature 生成
  • 在数据流模板中调用 waitUntilFinish() 后可以运行代码吗?

    我有一个批处理 Apache Beam 作业 它从 GCS 获取文件作为输入 我的目标是根据执行后管道的状态将文件移动到两个 GCS 存储桶之一 如果管道执行成功 则将文件移动到存储桶 A 否则 如果管道在执行过程中出现任何未处理的异常 则
  • Convert.FromBase64String 方法的 Java 等效项

    Java 中是否有相当于Convert FromBase64String http msdn microsoft com en us library system convert frombase64string aspx which 将指
  • 如何为 Gson 编写自定义 JSON 反序列化器?

    我有一个 Java 类 用户 public class User int id String name Timestamp updateDate 我收到一个包含来自 Web 服务的用户对象的 JSON 列表 id 1 name Jonas
  • hibernate总是自己删除表中的所有数据

    您好 我正在开发一个 spring mvc 应用程序 它使用 hibernate 连接到存储文件的 mysql 数据库 我有两个方法 一个方法添加我选择的特定文件路径中的所有文件 另一种方法调用查询以返回从 mysql 存储的文件列表 问题
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 如何将文件透明地传输到浏览器?

    受控环境 IE8 IIS 7 ColdFusion 当从 IE 发出指向媒体文件 例如 mp3 mpeg 等 的 GET 请求时 浏览器将启动关联的应用程序 Window Media Player 我猜测 IIS 提供文件的方式允许应用程序
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

    我正在开发 Spring Hibernate MySql 应用程序 该应用程序尚未投入生产 我目前使用 Hibernatehbm2ddl该功能对于管理域上的更改非常方便 我也打算用Flyway用于数据库迁移 在未来的某个时候 该应用程序将首
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • java迭代器内部是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个员工列表 List
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐

  • 基于STM32单片机的智能卡路里热量表WIFI无线手机控制

    系统功能设计 本系统由STM32F103C8T6单片机 称重传感器 WIFI模块及电源组成 1 手机APP和stm32设备上WIFI模块进行连接 2 通过称重传感器采集到的重量 然后将采集到的数据通过wifi发送给手机 3 手机定制app接
  • (12)Spring框架——MyBatis的学习之关联映射

    目录 一 知识点 1 配置文件元素 二 概述 1 项目结构 2 描述 三 实例 1 mybatis config xml 2 db properties 3 log4j properties 4 mapper 1 IdCardMapper
  • 三、Python学习(二)海龟模块turtle画笔介绍及命令详解(画圆)

    1 画笔的状态 在画布上 默认有一个坐标原点为画布中心的坐标轴 坐标原点上有一只面朝x轴正方向小乌龟 这里我们描述小乌龟时使用了两个词语 坐标原点 位置 面朝x轴正方向 方向 turtle绘图中 就是使用位置方向描述小乌龟 画笔 的状态 2
  • MAC中import的maven工程无法识别java程序以及依赖包无法加载等问题的解决办法

    maven工程无法识别java程序以及依赖包 1 问题背景 2 问题截图 3 问题分析 4 问题解决 不想浪费时间就直接看4 4 前三步是我摸索的过程 4 1 删除已有的 idea文件 重新import工程 无效 4 2 删掉该maven工
  • Qt样式表 基础篇(1)

    一 什么是Qt样式表 Qt样式表是一种强大的Qt机制 除了通过子类QStyle已经可以实现的功能之外 它还允许自定义小部件的外观 Qt样式表的概念 术语和语法深受HTML层叠样式表 CSS 的启发 但同时适应了Qt 的小窗体部件 二 概述
  • opencv中的split函数

    split函数的功能是通道分离 原型 void split const Mat src Mat mvBegin void split InputArray m OutputArrayOfArrays mv 用法很显然 第一个参数为要进行分离
  • Global Illumination_SDF Generate & Visualize & Shadow

    Signed Distance Field 有向距离场 简称SDF 这其实是图形学中非常常用的数学概念 数学上来说 是定义在空间中的一个标量场 标量值为空间一点到曲面的距离 曲面外的点为正值 曲面上的点为0 曲面内的点为负数 对于需要渲染的
  • kali linux基础配置和输入法转换

    一 修改密码 1 打开终端 terminal 进入方式 桌面左上角 桌面右键 Ctrl Alt T 输入sudo passwd root 然后回车 先输入原账户密码 回车 再输入root密码 回车 再一次重复输入 回车 设置完成 二 修改系
  • GLSL基础

    OpenGL Shading Language GLSL作为一种着色语言是纯粹的和GPU打交道的计算机语言 因为GPU是多线程并行处理器 所以GLSL直接面向SIMD模型的多线程计算 GLSL编写的着色器函数是对每个数据同时执行的 每个顶点
  • “$Bitmap 有标记已使用的未用簇”

    前几天在电脑上用 DiskGenius 给移动硬盘分区的时候出现了这个错误 如下图所示 解决方法 在 cmd 命令行窗口中输入如下代码 chkdsk f x c PS 其中 c 为需要进行操作的盘符 根据实际盘符修改 操作完成后再进行分区就
  • socket网络编程学习笔记(listen、accept、recv)

    listen 函数 功能 将套接字置于侦听传入连接的状态 语法 int WSAAPI listen SOCKET s int backlog 参数一 标识绑定的未连接套接字的描述符 参数二 挂起连接队列的最大长度 如果设置为 SOMAXCO
  • ABAP学习(16):ABAP2XLSX,操作excel

    ABAP2XLSX ABAP2XLS是一个操作EXCEL的开源项目 相比较OLE2和DOI方式操作excel更加方便 ABAP中搜索ZDEMO EXCEL 搜索Program可以查看SAP提供的示例程序 实现多种Excel 1 创建exce
  • 切片传递与指针传递到底有啥区别

    提出疑问 在Go的源码库或者其他开源项目中 会发现有些函数在需要用到切片入参时 它采用是指向切片类型的指针 而非切片类型 这里未免会产生疑问 切片底层不就是指针指向底层数组数据吗 为何不直接传递切片 两者有什么区别 例如 在源码log包中
  • Filter(过滤器)

    文章目录 1 Filter 的基本作用 2 Filter 的基本使用 3 Filter 的执行流程 4 Filter 执行需要注意的细节 4 1 拦截路径的配置 4 2 拦截路链 过滤器链 5 案例小结 登录验证 6 小结 1 Filter
  • 最近5年183个Java面试问题列表及答案[最全]

    Java 面试随着时间的改变而改变 在过去的日子里 当你知道 String 和 StringBuilder 的区别 String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象 因此在每次对 St
  • Java使用itext 生成PDF,以生成个人简历为例

    在日常的应用中经常会有需求 生成pdf或者word文档 常见的第三方工具有Apache的poi 以及itext等等 这里使用itext生成pdf 以个人简历作为示例 了解itextde 使用 第0步 效果 第一步 引入依赖包
  • Latent Dirichlet Allocation(LDA)主题模型理论

    LDA是给文本建模的一种方法 属于生成模型 生成模型是指该模型可以随机生成可观测的数据 LDA可以随机生成一篇由N个主题组成的文章 通过对文本的建模 可以对文本进行主题分类 判断相似度等 LDA通过将文本映射到主题空间 即认为一篇文章有若干
  • python嵌套列表转为字典_python如何把列表变字典

    现在有一个列表 list1 key1 key2 key3 把他转为这样的字典 key1 1 key2 2 key3 3 python将列表变字典的两种方法 1 方法 再构造一个列表list2 1 2 3 使用zip转换为元组后 在将元组转换
  • angular原理及模块简介

    本人前端小白 奈何在公司在做一个PC端的程序 用angular写 不得不自学了一下angular框架 虽然在工作过程中勉强勉强够了 但是觉得既然用了就稍微了解得全面一点 所以花了几个晚上看了一下angular的developer guide
  • Mysql 参数autoReconnect=true 解决8小时连接失效

    1 即使在创建Mysql时url中加入了autoReconnect true参数 一但这个连接两次访问数据库的时间超出了服务器端wait timeout的时间限制 还是会CommunicationsException The last pa