彻底解决jdbc数据库连接超时重试

您所在的位置:网站首页 java连接网络 彻底解决jdbc数据库连接超时重试

彻底解决jdbc数据库连接超时重试

2023-12-26 23:15| 来源: 网络整理| 查看: 265

必须确保你的druid jdbc版本为1.2.6

这个问题只有在druid 1.2.6里解决,因为只要是低于druid 1.2.6版本,本身就存在bug,无论你怎么设都会打断连接。

背景

我们经常会在日志中看到“jdbc connection timeout, last connection was 11,080 ms这样的错误。

这个代表MYSQL主动把你的jdbc连接给踢掉了。

为什么MYSQL要踢掉connection?

这个很正常,那是因为:MYSQL不可能无限接在接受一个数据库连接请求后就一直给你KEEP在那边的。生产环境都是这么一个“梗”,试想一个connection里的一个sql的迪卡尔积有10mb,2000个边接keep在那8小时不关闭,这个mysql会被随时打爆。

在2001年古老的oracle 7g、8i时代,就已经有一个参数叫timeout,根据oracle创始人Larry Ellison和“杀死比尔”-哦,错了,是比尔.盖茨对这个参数解释是:1分钟。即数据库keep住你的一个连接1分钟,这1分钟内如果没有任何的重复连接那么该连接会被数据库踢掉。

这就是生产数据库的“自我保护”机制,这是必须的。这也是为什么我强调大家你的“线上SQL单条执行必须



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3