欢迎访问鸿雪径软件工作室,这里介绍软件工作室的相关技术产品、动态以及鸿雪径杂谈,如有技术合作请与工作室联系!邮费网 易食烤吧 特产大全网
首页 > JAVA > Communications link failure due to underlying exception的解决

Communications link failure due to underlying exception的解决

发布时间:2016-11-28 作者: 点击:737

应用经常碰到如下错误:

org.apache.jasper.JasperException: javax.servlet.ServletException: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: Broken pipe

STACKTRACE:

java.net.SocketException: Broken pipe
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
	at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
	at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
	at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2744)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)
	at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)
	at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
	at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)

基本上早晨第一次访问系统时发生的多,经了解mysql数据库默认情况下会在连接一直不使用的情况下自动断开连接,造成应用侧连接再次使用时连接已经不可用。

既然知道了原因,解决就不成问题了,解决方法有两个:

1、在java端,每次使用连接前都进行测试,这个不同的连接池会有不同的设置,这里就不一一介绍了。

2、设置mysql的断开时间,让他超过我们长时间不用的时间,例如设置为48小时。

mysql 设置如下:(编辑etc/my.cnf)

wait_timeout = 172800
interactive-timeout = 172800

更多关于 java,mysql 的信息
本站部分文章转载于网上,版权归原作者所有。如果侵犯您的权益,请Email和本站联系!
鸿雪径 www.HongXueJing.com  冀ICP备07017673号-4