解决Caused by: java.sql.SQLRecoverableException: IO Error: Connection reset相关问题

转载 2016年06月01日 13:59:20

解决Caused by: java.sql.SQLRecoverableException: IO Error: Connection reset相关问题

标签: 数据库连接池
 18615人阅读 评论(0) 收藏 举报
 分类:
 

java.sql.SQLException: Io 异常: Connection reset

数据库连接池中的连接被创建而长时间不使用的情况下,该连接会自动回收并失效,但客户端并不知道,在进行数据库操作时仍然使用的是无效的数据库连接,这样,就导致客户端程序报“ Java.sql.SQLException: Io 异常: Connection reset” 或“java.sql.SQLException 关闭的连接”异常。

在配置数据源后面加上

<property name="validationQuery" value="select * from dual"/>


配置后,客户端在使用一个无效的连接时会先对该连接进行测试,如果发现该连接已经无效,则重新从连接池获取有效数据库连接来使用。

 

在tomcat的context.xml里面设置数据源时候可参考:

 <Resource auth="Container"
  driverClassName="oracle.jdbc.OracleDriver"
  type="javax.sql.DataSource" 
  url="jdbc:oracle:thin:@11.11.11.45:1521:orcl"
  name="jdbc/login"
  username="login"
  password="login"
  maxActive="15"
  maxIdle="10"
  maxWait="-1"
  minIdle="2"
  removeAbandonedTimeout="5"
  testOnBorrow="true"
  testWhileIdle="true"
  testOnReturn="true"
  removeAbandoned="true"
  logAbandoned="true"
  validationQuery="select 1 from dual"
 /> 
 
 <Resource auth="Container"
  driverClassName="oracle.jdbc.OracleDriver"
  type="javax.sql.DataSource" 
  url="jdbc:oracle:thin:@11.11.11.44:1521:orcl"
  name="jdbc/intraweb"
  username="intraweb"
  password="intraweb"
  maxActive="15"
  maxIdle="10"
  maxWait="-1"
  minIdle="2"
  removeAbandonedTimeout="5"
  testOnBorrow="true"
  testWhileIdle="true"
  testOnReturn="true"
  removeAbandoned="true"
  logAbandoned="true"
  validationQuery="select 1 from dual"
 />


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

以上是从网上搜到一篇文章。网上跟这个问题相关的解决思路是Connection Reset的原因有可能有以下几种原因:

1.配置的数据连接池的连接数不够用;

2.数据库的连接池中的连接,长时间不用,数据库主动断开连接,而客户端不知道,在用的时候仍然拿到的是无效的连接;

分别对应以上的两种猜想的原因,进行处理:

1.配置连接池的最大、最小、空闲连接数等;

2.配置对连接池里的连接进行有效性检查,如,配置有效性连接检查sql语句,配置是否进行有效性检查等;


以上只是思路,具体配置内容要根据不同的数据源进行不同的配置,解决思路可以参照上面。至于是否还有别的方面原因,暂时未知。

我的项目中用到的是c3p0数据源,当时就按c3p0的配置方式添加了有效性检查的相关配置,关于c3p0的详细配置可以参照:

http://blog.csdn.net/majian_1987/article/details/18598857

java 中的connection reset 异常处理分析

在Java中常看见的几个connection rest exception, Broken pipe, Connection reset,Connection reset by peer Socke...
  • raintungli
  • raintungli
  • 2013年03月01日 13:55
  • 28016

关于ECONNRESET的问题处理

有几次我的andorid客户端报错:IOException:java.net.SocketException: recvfrom failed: ECONNRESET (Connection rese...
  • Oliverzzj
  • Oliverzzj
  • 2014年03月21日 11:26
  • 8194

DBCP数据库连接失效的解决方法(Io 异常:Connection reset)

网上很多评论说DBCP有很多BUG,但是都没有指明是什么BUG,只有一部分人说数据库如果因为某种原因断掉后再DBCP取道的连接都是失效的连接,而没有重新取。有的时候会报Io 异常:Connecti...
  • s464036801
  • s464036801
  • 2015年02月11日 15:26
  • 1035

Connection reset原因分析和解决方案

Connection reset原因分析和解决方案
  • cwclw
  • cwclw
  • 2016年10月12日 14:41
  • 24212

http client遭遇Connection reset问题,以及解决方法

客户端使用200个线程往服务器端发送数据,每次数据量约100K. 发送的时候使用了多线程连接池管理器 private MultiThreadedHttpConnectionMa...
  • lcx46
  • lcx46
  • 2014年09月01日 19:32
  • 41892

记录nginx两种问题解决

1: recv错误recv() failed (104: Connection reset by peer) while reading client request line发生这种问题,主要是因为...
  • ugg
  • ugg
  • 2013年07月02日 20:07
  • 17701

Kettle使用中的四个小问题

连接不上资源库报错:ERROR: No repository provided, can’t load job. ERROR: Kitchen can’t continue because the j...
  • aiynmimi
  • aiynmimi
  • 2017年11月15日 14:14
  • 246

遇到的ssh问题汇总

Putty出现"Network error:Software caused connection abort",然后就断线的解决办法  1. 在 PuTTY 的 Connection 项目中设定 "...
  • qw_xingzhe
  • qw_xingzhe
  • 2014年03月16日 22:41
  • 1038

memcached 缓存参数的详解

memcached 缓存参数的详解 (2013-03-18 17:39:17) 转载▼   分类: 缓存学习 http://bbs.csd...
  • javastart
  • javastart
  • 2015年03月12日 09:54
  • 989

Spark在shuffle数据的时候遇到的问题

问题描述:今天对比较大的数据集a做,a.leftOuterJoin(b)的操作的时候,出现错误,查看log,错误如下: WARN org.apache.spark.network.server.T...
  • u010270082
  • u010270082
  • 2016年03月10日 17:33
  • 6221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Caused by: java.sql.SQLRecoverableException: IO Error: Connection reset相关问题
举报原因:
原因补充:

(最多只允许输入30个字)