Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MYSQL vs JAVA 连接错误

MYSQL vs JAVA 连接错误

作者头像
AustinDatabases
发布于 2019-07-12 07:00:35
发布于 2019-07-12 07:00:35
4K0
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

最近开发告诉我,他们在测试系统的时候,会经常有连接MYSQL的连接被踢掉。具体给我的解释是,JAVA的缓冲池连接MYSQL 保持连接,但再次使用的时候,报连接错误。

对应应用程序的报错的时间点,查了一下 PROXYSQL 和 MYSQL 的错误日志,的确是有相关的错误。

PROXYSQL 错误日志

MYSQL 的错误日志

那么问题来了,到底为什么会 got timeout reading communication packets。

DBER可以冠冕堂皇的告知,这是JAVA 的问题,不是数据库的问题,但是如果作为 Architector of Databases,这样的回答的确是遭恨。

所以必须搞清楚到底是怎么回事,故事就开始了。首先JAVA 程序是有缓冲池来连接到 MYSQL 的 ProxySQL 的,而ProxySQL 作为MYSQL 的中间件和缓冲,会将JAVA的连接转接到 MYSQL (MGR MTS)的主节点。

分析问题的一步步来,我们先从MYSQL 这个根上来

从MYSQL 的角度来说,产生 Aborted_clients 和 Aborted_connects 有三个原因。

1 客户端的连接,在MYSQL中被意外的终止了,至于这个意外是什么,有可能是当前的连接被DBA 使用KILL 终止了,或者其他的PT-KILL工具之类的方式,让你的连接停掉了。

2 MYSQL 中的两个参数, wait_timeout 和 interactive_timeout ,wait_timeout 是如果连接处于 idle的状态多长时间,这个连接就会被踢掉。wait_timeout 和 interactive_timeout

wait_timeout 是你的连接的idle(空闲的时间),超过多少时间就被系统KILL 掉

interactive_timeout 是在程序和数据库交互中,的间隔时间,如果你间隔时间较长,让数据库等的不耐烦了,就给你清理掉你的连接的线程。

程序员可能会问,WHY, 这主要是每个连接都会HOLD住一定的内存,例如 sort buffer join buffer 之类的,如果这些BUFFER 初始的时候就给的挺大,那后面如果连接太多,系统就可能OOM, 所以系统必须管管那些不负责的连接,光知道开,不知道关。

那如何来确认你现在的MYSQL 的连接数,这里设置都是 1800秒,也就是30分钟。

说完这里,继续说PROXYSQL, 作为目前最好的开源的MYSQL 的中间件,用的人不少。

其实proxysql 也是有线程池的,我目前的PROXYSQL 就有一个主34个子线程组成。

而proxysql 中的连接池也是保存空闲连接的,而多长时间PROXYSQL 会进行一个ping 保持与MYSQL之间的连接,的时间是通过 mysql-ping_interval_server_msec 来进行。

而mysql-connection_max_age_ms 是当空连接在没有任何会话使用的情况下,空闲的时间超过了 mysql-connection_max_age_ms 的设置后PROXYSQL 会自动关闭这个连接。

mysql-ping_timeout_server 则是PROXYSQL 为了维持和后端的空闲连接,每隔一段时间来发送PING 一次得到回复超时的时间

写到这里,估计能送网上BAIDU到很多,关于这样的问题,而解决这样问题的方法,大部分是修改MYSQL的 两个timeout 的时间,默认为28800秒也就是 8个小时,他们建议将时间改为 31536000 秒,好吧我不打人,这样的程序员每月能赚2000块在北京都是多给。

最后我这个非JAVA Developer GOOGLE 出的解决方案是

在配置Druid DatasourceStat

1 需要配置

validationQuery: select 1 (这样的语句去访问数据库避免引起性能的消耗)

testWhileIdle: true

timeBetweenEvictionRunsMillis: 的设置一定要小于 mysql 或者 proxysql 的 timeout 值

我这里 timeBetweenEvictionRunMills 的值应该是小于 3分钟。

到此 解决Communications link failure 的问题,告知段落,到目前为止还没有新的错误告诉我,阿弥陀佛。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL常用监控项
1数据库版本 mysqladmin version 2需要监控的基本状态信息 数据库的连接状态 mysqladmin ping 数据库启动时间 Uptime 数据库当前连接数 Threads_connected 数据库使用的连接最大个数 max_used_connections 数据库放弃的连接个数 aborted_clients 数据库尝试连接失败次数 aborted_connects 3需要监控的参数 Server_Id
HaydenGuo
2019/12/13
1.2K0
MySQL常用监控项
故障分析 | TCP 缓存超负荷导致的 MySQL 连接中断
在执行跑批任务的过程中,应用程序遇到了一个问题:部分任务的数据库连接会突然丢失,导致任务无法完成。从数据库的错误日志中,发现了 Aborted connection 的信息,这说明客户端和服务器之间的通信被异常中断了。
爱可生开源社区
2024/04/25
3480
故障分析 | TCP 缓存超负荷导致的 MySQL 连接中断
MySQL中有哪些需要注意的配置项?
即使是经验老道的人也会犯错,会引起很多麻烦。所以在盲目的运用这些推荐之前,请记住下面的内容:
兔云小新LM
2019/08/09
1.3K0
mysql超经典的8小时问题-wait_timeout
场景出现的理论依据 MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0/dbcp 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向c3p0/dbcp 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常。
红目香薰
2022/11/29
9500
mysql 连接异常Communications link failure
最近在监控线上日志时发现,时长会抛出如:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4,977,174 milliseconds ago.  The last packet sent successfully to the server was 1 milliseconds ago 异常信息,通常见到如上异常,是因为应用使用了连接池管理连接,有些连接已经失效了,拿失效的连接去请求mysql导致的,这个就是经典的mysql八小时的问题
kl博主
2023/11/18
5.3K0
那些年踩过的MySQL wait_timeout参数的坑
MySQL wait_timeout参数修改问题,可能经常会有DBA遇到过,下面就试验一下并看看会有什么现象。
俊才
2019/08/08
2.6K0
那些年踩过的MySQL wait_timeout参数的坑
通过案例分析MySQL中令人头疼的Aborted告警
这篇文章通过案例跟大家分析了MySQL中令人头疼的Aborted告警的相关资料,文中将Aborted告警介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
拓荒者
2019/03/11
8310
部署到服务器上的项目隔段时间访问查不到数据?服务器上安装mysql都要调整的参数
最近在部署一个项目,试用了一个腾讯云的服务器,正常安装docker和mysql,构建镜像以及启动容器;后面发现只要我隔段时间不去访问项目,就会出现数据库无法查询的情况,项目查不到数据;查看数据库和项目有关的那个数据库直接消失了?!!然后mysql容器也自己停掉了?!
后端小白
2024/12/30
980
部署到服务器上的项目隔段时间访问查不到数据?服务器上安装mysql都要调整的参数
关于Aborted connection告警日志的分析
有时候,连接MySQL的会话经常会异常退出,错误日志里会看到"Got an error reading communication packets"类型的告警。本篇文章我们一起来讨论下该错误可能的原因以及如何来规避。
MySQL技术
2020/05/19
3.3K0
Mysql性能优化
Mysql性能优化 Mysql的性能参数可以分为以下几个大类,这里仅整理一些常用的参数配置
飞天小子
2021/10/13
1.8K0
技术分享 | 探究 Druid 连接池探活方式的实现
爱可生交付服务团队北京 DBA,对数据库及周边技术有浓厚的学习兴趣,喜欢看书,追求技术。
爱可生开源社区
2021/06/16
4K0
技术分享 | 探究 Druid 连接池探活方式的实现
Mysql占用过高CPU时的优化手段
Mysql占用CPU过高的时候,该从哪些方面下手进行优化? 占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引; 2)打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析,导致CPU过高,多数是GroupBy、OrderBy排序问题所导致,然后慢慢进行优化改进。比如优化insert语句、优化group by语句、
洗尽了浮华
2018/01/23
4.8K0
Mysql占用过高CPU时的优化手段
mysql全配置解析
在本文中,我们将深入解析MySQL配置文件,以及每个配置项的作用和优化建议。从基本设置、连接设置、缓存设置、日志设置、InnoDB设置到其他设置,我们将逐一讨论如何通过调整这些参数来提升MySQL性能。
默 语
2024/11/20
1660
MySQL|Aborted connection 日志分析
这些日志到底是什么导致的呢?本文探讨一下 该 Warning 的成因。首先要提前说明的是MySQL 5.7 提供了新的日志输出内容控制参数 log_error_verbosity 该参数的值对应的影响如下:
用户1278550
2020/11/02
8K0
MySQL|Aborted connection 日志分析
MySQL占用CPU过高 查找原因及解决 多种方式
-- select * from information_schema.PROCESSLIST where info is not null;
用户5005176
2021/08/08
7.4K0
MySQL备份问题排查和思考
行内数据库备份在使用某备份软件,使用的数据库版本MySQL 8.0社区版,全备使用mysqldump进行,DBA早上巡检发现有一套数据库全备份失败,心里一疙瘩怎么回事呢?来看看如下报错
老叶茶馆
2021/11/05
1.2K0
MySQL备份问题排查和思考
防止连接Mysql超时,JDBC探活配置
我们知道Mysql有两个关于连接超时的参数,默认为8小时: MySQL > show global variables like '%timeout%'; wait_timeout = 28800
MySQL轻松学
2018/03/09
8.9K0
防止连接Mysql超时,JDBC探活配置
Linux中MySQL配置文件my.cnf参数优化
MySQL参数优化这东西不好好研究还是比较难懂的,其实不光是MySQL,大部分程序的参数优化,是很复杂的。MySQL的参数优化也不例外,对于不同的需求,还有硬件的配置,优化不可能又最优选择,只能慢慢的进行优化,需要不断的调试,才能达到不同环境的最优选择。 首先介绍一下MySQL配置文件中不同模块 [client] MySQL客户端应用模块,只有MySQL附带的客户端应用程序保证可以读取此模块下的内容。 [mysqld] MySQL服务端应用模块 [client] port = 3306 socket
863987322
2018/01/24
3.6K0
MySQL 5.7优化
MySQL 5.7 提供了众多参数用于优化数据库性能,具体优化取决于你的硬件资源、应用需求、查询模式以及数据规模。下面将从InnoDB存储引擎、查询缓存、连接管理、日志与事务、内存管理、并发控制等几个方面详细介绍可优化的参数及其推荐值。
九转成圣
2025/02/20
1280
浅析interactive_timeout和wait_timeout
一 前言 这篇文章源于自己一个无知的提问,作为一个DBA 老鸟,实在汗颜 。如图,修改wait_timeout参数之后 并没有及时生效,于是乎去跑到技术支持群里问了。。ps 应该去查g.cn 才对。。
用户1278550
2018/08/09
7710
相关推荐
MySQL常用监控项
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文