- 浏览: 413945 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (184)
- IDE (4)
- dotCMS (3)
- Liferay Portal (1)
- J2EE (7)
- My SQL (16)
- IBM DB2 (3)
- Oracle (2)
- JDBC (4)
- Hibernate (3)
- JSP (0)
- Framework (4)
- Java编程 (30)
- C++编程 (0)
- Struts 1.X (2)
- Struts 2.X (6)
- Linux (11)
- Spring (7)
- JavaScript (6)
- Ajax (2)
- XML (3)
- IBM Websphere Portal (1)
- IBM Lotus Quickr (1)
- CMS (2)
- ERP (0)
- CRM (0)
- 大型网站架构开发 (1)
- 面试武器 (2)
- HTML 5 (2)
- dTree && webFxloadTree (2)
- JVM (7)
- SQL Server (3)
- Tomcat && Apache && Jboss && Weblogic-中间件 (4)
- FreeMarker (2)
- MongoDB (7)
- OpenSource开源 (24)
- Cloud (0)
- FFmpeg (3)
- Thrift (1)
- SpringSide (1)
- Design Pattern (1)
- solr&&ES (2)
- git&svn (1)
- 大数据 (8)
- 人工智能 (0)
- Hadoop (3)
- Spark (0)
- Sqoop (1)
- Flume (1)
- Hive (3)
- HDFS (4)
- ES (0)
- Redis (1)
- Kafka (3)
- MR (0)
- 机器学习 (0)
- 深度学习 (0)
- Impala (2)
- HBase (2)
- Spring Boot (1)
- Spring Cloud (0)
- 大数据架构 (6)
- 架构思想理论 (6)
- 技术管理 (4)
- 数据结构与算法 (4)
最新评论
-
huijz:
...
Spring Data JPA研究-使用Spring Data JPA 简化JPA 开发(ZZ) -
用户名不存在:
[img][/img][*]引用[u][/u][i][/i][ ...
MongoDB 模糊查询的三种实现方式-morphia实现 -
junsheng100:
请给个完整的例子吧!包括jar文件等
java调用ffmpeg获取视频文件信息参数代码 -
mj:
谢谢!!
SQL Server里面如何导出包含(insert into)数据的SQL脚本 (转载ZZ)
最近的一个项目在Hibernate使用C3P0的连接池,数据库为Mysql。开发测试没有问题,在运行中每个一段长的空闲时间就出现异常Communications link failure due to underlying exception:
- org.hibernate.exception.JDBCConnectionException: could not execute query
- at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
- at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
- .......
- Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:
- ** BEGIN NESTED EXCEPTION **
- com.mysql.jdbc.CommunicationsException
- MESSAGE: 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)
- ......
- ** END NESTED EXCEPTION **
查看了Mysql的文档,以及Connector/J的文档以及在线说明发现,出现这种异常的原因是:
Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。
解决的方法有3种:
- 增加wait_timeout的时间。
- 减少Connection pools中connection的lifetime。
- 测试Connection pools中connection的有效性。
当然最好的办法是同时综合使用上述3种方法,下面就DBCP和C3P0分别做一说明,假设wait_timeout为默认的8小时
DBCP增加以下配置信息:
- //set to 'select 1'
- validationQuery = "select 1"
- //set to 'true'
- testWhileIdle = "true"
- //some positive integer
- timeBetweenEvictionRunsMillis = 3600000
- //set to something smaller than 'wait_timeout'
- minEvictableIdleTimeMillis = 18000000
- //if you don't mind a hit for every getConnection(), set to "true"
- testOnBorrow = "true"
C3P0增加以下配置信息:
- //获取connnection时测试是否有效
- testConnectionOnCheckin = true
- //自动测试的table名称
- automaticTestTable=C3P0TestTable
- //set to something much less than wait_timeout, prevents connections from going stale
- idleConnectionTestPeriod = 18000
- //set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out
- maxIdleTime = 25000
- //if you can take the performance 'hit', set to "true"
- testConnectionOnCheckout = true
更多的配置信息大家可以查看C3P0文档,Connector/J文档,以及DBCP的文档。
解决方案(二)
Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。
当前的几个项目都是放在LINUX下面的,数据库采用MySql,我们设置了每天晚上转点的时候自动重启,不过还是经常会出现无法登录的问题,搞得不得每天重启应用。
在仔细查看日志后,终于找到原因了。
这与MySql的一个默认设置有关,把网上找到的一些资料整如下,以防下次再出现这种问题:
最近在用一个MySQL的Java连接池的过程中,连接一晚上不释放,第二天就会造成超时的错误,查了一下原因,原来是因为MySQL默认的空闲等待时间是8个小时,一旦空闲超过8个小时,就会抛出异常。异常文本如下:
com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException
MESSAGE: Software caused connection abort: socket write error
解决方式:编辑/etc/my.cnf(windows下为my.ini),将超时时间设置为10年,在[mysqld]后面加入:
wait_timeout=315360000 然后重启MySQL
# service mysql restart
搞定。然后重启超时的java连接池程序吧。
发表评论
-
SQL注入攻击防范研究
2021-12-27 15:25 188SQL注入攻击如何攻击的: JDBC Statemen ... -
MySQL 的性能-SQL 执行分析(转)
2017-07-11 17:16 2712后端开发必然会接触到数据库,数据层的优劣会影响整个服务的响 ... -
MySQL关联表更新数据SQL脚本
2017-06-23 17:18 3418假定我们有两张表,一张表为Product表存放产品信息 ... -
MySQL索引失效的情况总结
2017-05-17 16:09 2180MySQL索引失效的几种情况总结(转载) 1.索引 ... -
MySQL函数研究总结-CONCAT、REPLACE、ROUND、FLOOR和CEILING、TRUNCATE、CASE WHEN等
2017-02-20 16:26 1512CONCAT、REPLACE、ROUND、FLOOR和CEI ... -
MySQL性能优化研究
2016-11-03 00:12 1044一 当发现程序运行比较慢的时候,首先排除物力资源 ... -
MySQL行级锁与表级锁研究
2016-10-31 23:00 3046MySQL中的锁(表锁、行锁) ... -
MySQL、SQLServer和Oracle 数据结构变动-添加修改删除字段总结
2013-01-29 10:59 1272MySql:添加单列:ALTER TABLE 表名 ADD ... -
MySQL两大常用存储引擎MyISAM,InnoDB的区别
2012-08-10 14:27 1471本文主要整理了MySQL两大常用的存储引擎MyISAM, ... -
MySQL数据库连接超时(wait_timeout)问题的处理
2011-07-19 18:16 3699想必大家在用MySQL时都会遇到连接超时的问题,如下图所示: ... -
SQL汇总:Inner join on, left join on, right join on详细使用方法
2011-06-17 18:06 17081.理论 只要两个表的公共字段有匹配值,就将这两个表中的记录 ... -
Linux下卸载Mysql命令
2011-02-11 10:10 2463centOS linux下卸载Mysql: (One)[roo ... -
MySQL数据库性能优化八法
2011-01-22 21:42 9661、选取最适用的字段属性 MySQL可以很好的支持大数据 ... -
如何解决MySQL的master-slave模式中ReplicationDriver的使用问题
2011-01-11 12:02 1603前言: 之前downpour有一个贴(http://www. ... -
My SQL写到服务中方法(针对免安装版)
2011-01-11 00:50 1037配置系统服务 1、注册服务 CMD 命令行模式中 mysqld ...
相关推荐
NULL 博文链接:https://zhoudan241.iteye.com/blog/1432014
java.net.SocketException: Unrecognized Windows Sockets error: 0: no Inet4Address associated with interface 本文提供了在Win7或Vista系统下解决这个异常信息的办法。
java.net.SocketException Connection reset 解决方法
JAVA.NET.SOCKETEXCEPTION TOO MANY OPEN FILES解决方法,三种方案,临时,永久,根治
最近纠结致死的一个java报错java.net.SocketException: Connection reset 终于得到解决
接口调用报错:java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory
Google I/O 2013推荐Android 网络通信框架Volley 下载下来后然后编译为jar包,再在自己的工程里import进来。
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站...
socket 文件同步
System.Net.WebException: 无法显示错误消息,原因是无法找到包含此错误消息的可选资源程序集 ---> System.Net.Sockets.SocketException: 无法显示错误消息,原因是无法找到包含此错误消息的可选资源程序集 ...
转:java.net.SocketException: Too many open files解决方法最近随着网站访问量的提高把web服务器移到linux下了,在移服务器的第二天,tomcat频繁的报 java.net.SocketException: Too many open files错误,错误...
import java.net.SocketException; public class UDPServer { public static void main(String[] args) { try { byte [] buffer = new byte[1024]; DatagramSocket socket = new DatagramSocket(4444); ...
Linux下运行tomcat或者was出现java.net.SocketException: 打开的文件过多错误 tomcat报“too many open files”的错误,解决办法如下:
34. import java.net.SocketException; 35. import java.net.UnknownHostException; 36. import java.util.Date; 37. import java.util.Scanner; 38. import java.util.Stack; 39. import java.util.prefs....
System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 想到阿里云喜欢用安全组屏蔽端口,于是我就赶紧去配置了安全规则。进站出站都配置了,结果还是...
syslog4j Syslog4j提供了BSD Syslog协议(RFC 3164)和“结构化syslog”协议草案(RFC Draft)的客户端和服务器实现。 警告 这是使用的重新打包的fork,因为原始软件包没有发布到Maven Central的最新版本。...
注意:由于压缩包大于15M,所以分两部分上传,这是第一部分!下载SSH2-1后,再解压这两个文件后就可用了。
1.解决服务器报错:java.net.SocketException: No buffer space available (maximum connections reached?): JVM_Bind 2.解决Windows Server 2003/2008 R2系统BUG导致windows缓冲区已满(no buffer space),Windows...
有时会抛出 java.net.SocketException: Invalid argument) Java 行家 运行upload.rb 配置 将 aws 凭据设置为 AwsCredentials.properties 具有标记列和别名列的 csv 文件。 令牌列应命名为“device_token”或...
Caused by: java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574) at ...