MySQL-CommunicationsException异常的三个典型场景及解决方法
我们在使用MySQL数据库的异常时候,偶尔会遇到com.mysql.jdbc.exceptions.jdbc4.CommunicationsException,个典型为了以后能够更快速的场景定位解决该问题,下面对该异常出现的及解决方场景及解决方法进行总结,希望能起到抛砖引玉的异常作用。
场景一
场景描述
wait_timeout
根因分析异常的个典型原因是数据库连接空闲时间超过了MySQL服务器配置的wait_timeout,即上图中【2.3 数据库操作】时候的场景时间 【减去】【1.5 放入连接池中】时候的时间【大于】wait_timeout。
解决办法方法一
mysql5以前的及解决方版本可以直接在jdbcurl的配置中附加上“autoReconnect=true”。
方法二
将mysql的异常全局变量wait_timeout的值修改为最大。
show global variables like "wait_timeout";方法三【建议采纳的个典型方案】
目前项目采用的数据库连接池是druid,解决该异常用到的场景配置项如下:
配置
缺省值
说明
validationQuery
用来检测连接是否有效的sql,高防服务器要求是及解决方一个查询语句,常用select x。异常如果validationQuery为null,个典型testOnBorrow、场景testOnReturn、testWhileIdle都不会起作用。
testWhileIdle
false
建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于
timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。timeBetweenEvictionRunsMillis
1分钟
有两个含义:
1) Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于
minEvictableIdleTimeMillis则关闭物理连接。
2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明minEvictableIdleTimeMillis
连接保持空闲而不被驱逐的最小时间
场景二
场景描述
应用阻塞无响应
根因分析客户端发送select语句后,服务端往客户端写大量数据,客户端需要等待超过1分钟才能继续写入,服务端就会把这种写入时超过1分钟(默认值)等待的连接直接关闭。
而为什么会超过1分钟?根因是jdbc程序在接收大量数据时会耗费大量的云南idc服务商cpu跟内存资源,还需要不断做的GC,导致接收暂停,一旦GC时间超过net_write_timeout,mysql则会关闭连接。

根因
解决办法方法一
根据业务场景增大net_write_timeout
SET GLOBAL net_write_timeout =180;
SELECT @@global.net_write_timeout ;
SELECT @@session.net_read_timeout ;
show variables like %timeout%方法二【建议采纳的方案】
根据业务场景,优化应用程序。
优化方向:
优化SQL,通过分页的方式减少一次查询返回的数据量优化应用,减少应用停顿时间场景三
场景描述
SSL
问题分析MySQL server versions like 5.6.25 and earlier or 5.7.5 and earlier,客户端连接属性useSSL默认是false;MySQL server versions like 5.6.25+ or 5.7.5+,客户端连接属性useSSL默认是true。
默认useSSL=true的MySQL server版本,客户端连接属性还需要配置其他额外的连接属性,如果没有配置会抛出CommunicationsException异常。
解决办法方法一
在不需要SSL连接的场景下,显示设置useSSL=false
方法二
在需要SSL连接的场景下,客户端和服务端都需要进行正确的配置。服务器托管
具体配置可以参考官网文档:Connecting Securely Using SSL:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-using-ssl.html
相关文章
探索M310套件的功能与应用(解析M310套件的关键技术,开启智能科技新时代)
摘要:随着智能科技的快速发展,各种先进的套件和模块为我们的生活带来了许多便利和创新。其中,M310套件作为一款功能强大、应用广泛的开发工具,备受关注和推崇。本文将深入探索M310套件的功...2025-11-05
只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常
统一返回值在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。比较通用的返回值格式如下:publicclassR2025-11-05
MIT新技术:一根探针成像多个神经元,让神经元放电“看得见”
MIT 和波士顿大学的研究人员开发了一种新的荧光探针法,使科学家观察大脑中的电路,并将其活动与特定行为联系起来。他们一次成像了小鼠大脑中许多神经元的活动,论文发表在 Nature 上。麻省理工学院和波2025-11-05
数学就像一个章鱼:它的「触手」可以触及到几乎所有学科。虽然有些学科只是沾了点数学的边,但有些学科则被数学的「触手」紧紧缠住。数据科学就属于后者。如果你想从事数据科学工作,你就必须解决数学问题。如果你已2025-11-05EVGA1080TiFTW3(超频能力与散热性能的完美结合,为你带来最佳游戏体验)
摘要:在当今游戏市场中,高性能显卡是玩家们追求卓越游戏体验的必备装备。EVGA1080TiFTW3作为顶级显卡的代表,以其卓越的超频能力和出色的散热性能,在游戏玩家中广受好评。本文将详细...2025-11-05
介绍我是一个程序员。从大学时代开始我就一直在进行编程,而我仍然对使用简单的Python代码所开辟的道路之多感到惊讶。但是我并不总是那么高效。我相信这是大多数程序员(尤其是刚起步的程序员)共有的一个特征2025-11-05

最新评论