Communications link failure

博客内容介绍了在使用MySQL时遇到的'Communications link failure'异常,详细解析了异常产生的原因——数据库连接超时,并提供了解决方案,即修改MySQL配置文件以增加超时时间。同时,文章还简要提及了Linux目录结构的分层标准FHS。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Communications link failure


异常名称

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure


异常详情

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 31,516,568 milliseconds ago.  The last packet sent successfully to the server was 2 milliseconds ago.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3589)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3478)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4019)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)


异常分析

mysql数据库默认超时连接为8小时,即使是连接池中的连接,依然如此。超时之后继续使用该连接则会抛出该异常。解决方法是:修改配置文件/etc/mysql/my.cnf,修改超时时间为1年,在该文件中新增如下内容即可:

[mysqld]

wait_timeout=31536000

interactive_timeout=31536000


扩展:

1. linux目录结构分层

根据FHS(http://www.pathname.com/fhs/)的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循FHS的标准。

------------------------------------------------------------------------------------------------------------------

  

 

可分享的(shareable)

不可分享的(unshareable)

不变的(static)

/usr (软件放置处)

/etc (配置文件)

/opt (第三方协力软件)

/boot (开机与核心档)

可变动的(variable)

/var/mail (使用者邮件信箱)

/var/run (程序相关)

/var/spool/news (新闻组)

/var/lock (程序相关)


四中类型:

a. 可分享的:

可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;

b. 不可分享的:

自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。

c. 不变的:

有些数据是不会经常变动的,跟随着distribution而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;

d. 可变动的:

经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。

事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:

/ (root, 根目录):与开机系统有关;

/usr (unix software resource):与软件安装/执行有关;

/var (variable):与系统运作过程有关。


参考:

1.  http://www.jb51.net/LINUXjishu/151820.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值