前段时间 现网突然频繁报出 连接不上数据库,偶滴的妖孽,其他地方都是用mysql,也没遇到这个问题呀。

java.io.EOFExceptionat

at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)

场景出现的理论依据

MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0/dbcp 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向c3p0/dbcp 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常。

如果你只是个程序员,你会想着,在去对数据库做操作前,我不是先对数据库连接做个校验或判断什么的,连接是working的,我才干活,那么你得到的解决方案-或许就是这样的

#c3p0配置

60

Test

false

true

60

如果你只是个DBA,你会想着,为什么数据库连接自己断了,是不是哪里有配置,我得去看看,那么你得到的解决方案-可能就是这样的

#my.cnf

wait_timeout=31536000

interactive_timeout=31536000

加大wait_timeout的时间。

But 现实环境中需要你考虑的是:

你设置多久检查一次连接有效的时间 依据是什么?

默认加大/减小wait_timeout除了解决当前问题,会不会带来其他影响?

个人当前觉得此题 第一需考虑的是:

你业务当前高峰期mysql_connection是多少?保留多久connection在高峰期都不会撑爆你数据库连接池?

如果你知道这个池-那么是改mysql ?还是改c3p0?还是双管齐下都是有据可循且不会带来后遗症的-最佳解决方案

如我当前有环境,一个现网的后台管理系统,使用人数在50以内,那么我wait_timeout 就是默认8小时,c3p0不用做连接有效性检查等,都是万事ok的。

而我还有一个EPG前台管理系统,用户量在300万以内,如果我wait_timeout为8小时,那我一到高峰期肯定就是死翘翘的,会有太多的TCP连接没关闭,

数据库连接数肯定是不够的。

因EPG的一个访问-一次对数据库操作量不大,查询完数据就完成ok啦,wait_timeout 设置在120s内应该是够用啦,那么相对应的c3p0中 设置小于wait_timeout 的时间有效性检查 -就能确保获取到连接是有效的。

请根据业务场景,来配置参数,不要解决了A问题,带来了B问题。

mysql把表里是时间加8小时_mysql经典的8小时问题-wait_timeout相关推荐

  1. mysql 8小时问题_Mysql经典的“8小时问题”

    假设你的数据库是mysql,如果数据源配置不当,将可能发生经典的"8小时问题".原因是mysql在默认情况下,如果发现一个连接的空闲时间超过8小时,将会在数据库端自动关闭这个连接. ...

  2. mysql当前时间加一天_MySQL 的加锁处理,你都了解的一清二楚了吗?

    MySQL加锁分析,一直是一个比较困难的话题. 我在工作过程中,经常会有同事咨询这方面的问题.本文,准备就MySQL加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQ ...

  3. mysql实现俩个属性加减运算_mysql加减乘除

    云数据库 MySQL 云数据库(RDS for MySQL)是稳定可靠.可弹性伸缩的云数据库服务.通过云数据库能够让您几分钟内完成数据库部署.云端完全托管,让您专注于应用程序开发,无需为数据库运维烦恼 ...

  4. Mysql给一个大表加一列_MySQL 大表添加一列的实现

    问题参考自: https://www.zhihu.com/question/440231149 ,mysql中,一张表里有3亿数据,未分表,要求是在这个大表里添加一列数据.数据库不能停,并且还有增删改 ...

  5. mysql删除表里面姓王的人_MySQL 删除数据表_mysql删除数据表命令_DROP TABLE table_name...

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  6. mysql某一列之前加一个球_MySQL作业:三色球,概率题,子查询【诗书画唱】

    use J190802 [使用J190802表] 1.创建表tbfact表,表结构是: id int primary key 自动增长 r1 int r2 int r3 int r4 int r5 i ...

  7. mysql加减时间-函数-时间加减

    select timediff('23:40:00', ' 18:30:00'); -- 两时间相减 SELECT   substring( timediff('23:40:00', ' 18:30: ...

  8. mysql 时间戳加减_mysql加减时间-函数-时间加减

    mysql加减时间-函数-时间加减 mysql加减时间-函数-时间加减 1. MySQL 为日期增加一个时间间隔:date_add() set @dt = now(); select date_add ...

  9. mysql日期减后取月_mysql加减时间-函数-时间加减

    select timediff('23:40:00', ' 18:30:00'); -- 两时间相减 SELECT substring( timediff('23:40:00', ' 18:30:00 ...

最新文章

  1. $0,$?,$!,$-,$*,$@,$#等的特殊用法
  2. 征服Perl——输入输出相关知识——里程碑M6
  3. cygwin swoole_swoole入门--------基础概念
  4. c++ 位运算_C语言之运算符
  5. diy实现spring依赖注入
  6. LeetCode 1668. 最大重复子字符串
  7. html页面循环报错,wxs 脚本中 for 循环的一种写法导致 page-frame.html 报错
  8. 5G(10)----5G 终端发展
  9. TCP/IP协议模型和OSI协议模型的概念
  10. python自动化测试环境搭建_(一)Python+Appium自动化测试环境搭建
  11. 在.net中使用GAC
  12. 石头扫地机器人加速异响_AI助力,无惧障碍 石头扫地机器人T7Pro测评
  13. 强网杯2022——WEB
  14. windows 上面git 克隆clone 的时候报错 warning:Clone succeeded,but checkout failed
  15. vue中面包屑的实现方法
  16. guest additions
  17. 【SSLGZ 2811】2017年10月30日提高组T2 摘Galo
  18. MAC电脑删除系统自带的软件
  19. Mi_Smart_Band_6(小米手环6)心跳数值PC显示
  20. MNL——多项Logit模型学习笔记(一)离散选择以及logit模型介绍

热门文章

  1. 什么是“大数据新闻”? 大数据
  2. CSU - 2085 手游大佬(天数计算)
  3. 用命令备份与还原网络设置
  4. 时间序列之MATLAB程序
  5. 大白话:计算机网络——网速
  6. pat甲级考试报名费_2019吉林省公务员考试笔面心得
  7. 营业执照编码验证规则(15位和18位
  8. photoshop使用技巧_如何使用Photoshop创建逼真的漫画
  9. 我所知道查找算法之斐波拉契(黄金分割法)查找
  10. 可以打开c语言的软件图标是个虫子,VC雕虫小技集(四) (转)