关于数据库连接池的最大空闲时间的配置

java的所有的连接池 无论是c3p0、dbcp还是druid,都有一个类似maxIdleTime配置项。具体含义就是当连接长时间没有向服务器发请求的时候,断开这个连接,避免对数据库连接的浪费。这个时间不是随便设的,它的依据是数据库的连接最大空闲时间。

以mysql为例,它有个_wait_timeout 参数,你可以通过命令show variables like “%timeout%”查看

+—————————–+———-+

| Variable_name               | Value    |

+—————————–+———-+

| connect_timeout             | 10       |

| delayed_insert_timeout      | 300      |

| innodb_flush_log_at_timeout | 1        |

| innodb_lock_wait_timeout    | 50       |

| innodb_rollback_on_timeout  | OFF      |

| interactive_timeout         | 28800    |

| lock_wait_timeout           | 31536000 |

| net_read_timeout            | 30       |

| net_write_timeout           | 60       |

| rpl_stop_slave_timeout      | 31536000 |

| slave_net_timeout           | 3600     |

| wait_timeout                | 28800    |

+—————————–+———-+

wait_timeout默认的时候是8个小时28800秒,但是有时候可能被不经意修改。这个时间表示当连接在28800个时间没有向服务器发请求的时候,它就会断开这个连接。

你可以通过set global wait_timeout=60000来修改。不过好像interactive_timeout也必须同时修改才可以,要不wait_timeout改不了,它会用interactive_timeout的值初始化wait_timeout(这个原理又是另外一回事了).

所以在使用连接池的时候maxWait或者maxIdleTime,这个参数必须设置为小于wait_timeout的值,否则的话,当你的连接长时间没和数据库交互,服务器早把你的连接断开了,而你的连接池还认为是有效的连接,除非你设置testOnBorrow或者testOnReturn设置为true,这样当连接每次从连接池中取出或者放回的时候检查下连接是否有效。不过这样回牺牲一点性能。

否则你就会收到下面这样类似的异常,特别是经过一个耗时长的查询之后,这个连接再用于进行下次数据库操作的时候。

The last packet successfully received from the server was 1,867,460 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

mysql数据库空闲时间设定_关于数据库连接池的最大空闲时间的配置相关推荐

  1. mysql数据库资源池是否耗尽_高性能数据库连接池的内幕

    何涛 唯品会平台架构师 何涛,现任职于唯品会平台架构部,要负责数据访问层,网关,数据库中间件,平台框架等开发设计工作.在数据库性能优化,架构设计等方面有着大量的经验积累.热衷于高可用,高并发及高性能的 ...

  2. mysql数据库64免安装_【文】MySQL-8.0.18-winx64免安装配置

    引言:最近手里撸了几个活,需要用到数据库.又不想太麻烦去安装MySQL.翻找u盘.发现了以前下载的MySQL8.0.18它是压缩包,果断上手去年元旦三天前下载的,有点意思开始配置! 1.首先解压文件, ...

  3. mysql数据库的链接地址_常用数据库连接URL地址大全

    1.Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); ...

  4. mysql 数据库还原 不齐_请教mysql数据库还原问题。

    你的位置: 问答吧 -> 数据库 -> 问题详情 请教mysql数据库还原问题. 50多m,能不能拆分?上传到服务器上总是超时.怎么办? [ 本帖最后由 geniux 于 2007-9-2 ...

  5. 与mysql数据库的交互实战_基于 Go 语言开发在线论坛(二):通过模型类与MySQL数据库交互...

    在这篇教程中,我们将在 MySQL 中创建一个 chitchat 数据库作为论坛项目的数据库,然后在 Go 项目中编写模型类与之进行交互.你可以本地安装 MySQL 数据库,也可以基于 Docker ...

  6. mysql数据库回滚日志_超干货!为了让你彻底弄懂 MySQL 事务日志,我通宵搞出了这份图解...

    作者 | Amazing10 责编 | 屠敏 本文为业余码农投稿,已获授权 还记得刚上研究生的时候,导师常挂在嘴边的一句话,"科研的基础不过就是数据而已."如今看来,无论是人文社科 ...

  7. 压测导致mysql数据库CPU很高_排查压测问题引发的系统性能调优过程

    前言:今天测试部门的小梦找到我,委屈巴巴的说我写的接口有问题,因为她对这个接口进行压力测试时,发现系统的吞吐量一直上不去,并且 应用服务器 (部署接口项目的服务器) 的CPU.内存等资源的使用率也一直 ...

  8. java 操作mysql数据库得到错误码_[数据库/Java]数据库开发过程中产生的MySQL错误代码及其解决方案...

    前言 吐槽一下,均是这两天遇到的破烂事儿,搞定了也好,以后出现此类问题也就放心些了. 下列遇到的问题大都是因为MySQL从5.x版本升级到8.0.11(MySQL8.0涉及重大改版)后,跟着连带着出现 ...

  9. MySQL数据库test连接语句_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!...

    本篇Himi简单介绍一些MySQL数据库的基础操作: 注:mysql 语句对大小写不敏感,语句以分号";"标识语句结束: 1.   首先使用两个简单的查询语句: 查询当前版本:se ...

最新文章

  1. 5获取按钮返回值消息_大数据从入门到深入:JavaEE 之 项目实战 项目基础编码阶段(5)...
  2. 乐峰VS聚美,明星也要吃咸盐
  3. ABAP销售合同删除Bapi
  4. python中unique_一个神奇的Python机器学习交互应用开放框架
  5. Spring boot 字符集编码
  6. 第三次学JAVA再学不好就吃翔(part72)--Date类
  7. P4551 最长异或路径
  8. Practice Lab 7:路由再分发
  9. c++ascii码转换为数字_在C++中将字符串转换为数字
  10. 测试驱动开发_?使用jest进行测试驱动开发
  11. 竞赛程序设计知识要点图谱
  12. 动态载入.ascx用户控件
  13. 能ping通,TCP就一定能连通吗?
  14. SpringBoot+FreeMarker实现单据打印功能
  15. Threejs导入OBJ模型出错的一些经验之谈
  16. java jtable 单元格合并_JTable单元格合并AAA
  17. SpringBoot2.x 集成 腾讯云短信
  18. mac双系统w ndows8,U盘如何安装MAC双系统
  19. EMQX的Web管理后台-Dashboard
  20. c语言字符数组自动填充,数组在C中自动填充

热门文章

  1. R语言使用lm函数拟合多元线性回归模型、假定预测变量没有交互作用(Multiple linear regression)
  2. pandas重置dataframe的索引(reset_index)、如果索引不匹配dataframe操作时候的问题、重置索引(不设置drop=true)远索引生成新的数据列
  3. 深度学习时间序列预测:GRU算法构建多变量时间序列预测模型+代码实战
  4. R配对卡方检验(McNemar‘s Test)
  5. K-means聚类K值的选择、Calinski-Harabasz准则
  6. Linux(ubuntu)下安装anaconda(64位)并配置jupyter notebook远程访问
  7. 如何改变java中的库包_如何在Java / Android模块化库中使两个相互独立的包相互独立?...
  8. 怎样训练左右手协调_2019中考体育训练计划
  9. 《开源者说》08期:聊聊Java那些事儿
  10. ipad php mysql_PHP中的MYSQL常用函数