连接数据库报错Io 异常: The Network Adapter could not establish the

时间:2022-05-03 08:29:47
一个纠结好久的问题,小女对JAVA实在是门外汉,只能求教诸位高人了。。。

起因是负责运营的系统平时连接都很正常,但是到业务高峰期服务器经常发生瞬堵,检查后台日志,报错信息如下:


###<2011-4-2 下午05时30分29秒 CST> <Info> <JDBC> <cnsz030356> <ICSs-GCCSFServer1146> <ExecuteThread: '23' for queue: 'weblogic.kernel.Default'> <V_GROUP_ICSS_GCC_GROUP_ICSS_GCC_001> <> <BEA-001156> <Stack trace associated with message 001129 follows: 

java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
         at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
         at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
         at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
         at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
         at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
         at weblogic.jdbc.common.internal.ConnectionEnvFactory.makeConnection(ConnectionEnvFactory.java:205)
         at weblogic.jdbc.common.internal.ConnectionEnvFactory.createResource(ConnectionEnvFactory.java:138)
         at weblogic.common.resourcepool.ResourcePoolImpl.makeResources(ResourcePoolImpl.java:1181)
         at weblogic.common.resourcepool.ResourcePoolImpl.makeResources(ResourcePoolImpl.java:1111)
         at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:368)
         at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:294)
         at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:468)
         at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:387)
         at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:81)
         at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:88)
         at weblogic.jdbc.pool.Driver.connect(Driver.java:148)
         at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:540)
         at weblogic.jdbc.jts.Driver.connect(Driver.java:139)
         at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:329)
         at com.paic.pafa.app.lwc.service.persistence.dao.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:131)
         at com.paic.pafa.app.lwc.service.persistence.dao.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:120)
         at com.paic.pafa.app.lwc.service.persistence.dao.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:177)
         at com.paic.pafa.app.lwc.service.persistence.dao.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:227)
         at com.paic.icss.gcc.outbound.dataextractbyesb.integration.dao.impl.EsalePolicyMaintenanceIbatisDAO.getSeqNoFromGCC(EsalePolicyMaintenanceIbatisDAO.java:108)
         at com.paic.icss.gcc.outbound.dataextractbyesb.biz.service.EsalePolicyMaintenanceService.execute(EsalePolicyMaintenanceService.java:84)
         at com.paic.amesb.delegate.imp.ejb.BusinessDelegateBean.runServiceNotSupported(BusinessDelegateBean.java:202)


12 个解决方案

#1


平时连接正常那说明应该连接代码是正常的,如果你这种情况是偶尔的,去查下数据库的启动时间,以前我遇见过数据库管理员在不通知的情况下重启数据库了的。。。。。

#2


你oracle监听服务启用了没有啊

jdbc driver 有没有换过试试

另,你们的系统没有经过压力测试嘛?  高峰就挂掉,并发多少啊?

#3


。。。网卡挂了。。。

。。你们网卡的吞吐量多少的饿,服务器好歹搞个千兆网卡沙

#4


引用 3 楼 x19881216 的回复:
。。。网卡挂了。。。

。。你们网卡的吞吐量多少的饿,服务器好歹搞个千兆网卡沙


网卡这么水啊

现在最屁也是千兆的吧  再说了

能有多大数据量让网卡转发数据包失败,怀疑

#5


引用 4 楼 magicluo 的回复:
引用 3 楼 x19881216 的回复:
。。。网卡挂了。。。

。。你们网卡的吞吐量多少的饿,服务器好歹搞个千兆网卡沙


网卡这么水啊

现在最屁也是千兆的吧  再说了

能有多大数据量让网卡转发数据包失败,怀疑


嘿嘿

#6


这个是数据库连接失败,多是由于数据库端的问题,要么数据库重启了,要不那边连接满了无法接受新的连接,不管如何,DBA都应能查出相应时间有何异常

-------------------------------------------------
爱问易 - 非官方技术支持互助平台
http://www.iaskengineer.com
-------------------------------------------------
几块钱就能解决的问题,何必困扰好几天?
-------------------------------------------------

#7


引用 3 楼 x19881216 的回复:
。。。网卡挂了。。。

。。你们网卡的吞吐量多少的饿,服务器好歹搞个千兆网卡沙


网络的可能性也有,硬件问题比较少,遇到过的就是网络阻塞,需要网络管理员查记录

#8


把数据库连接池的容量放大一点,可能是连接用完了

#9


TO zyz1985
因为系统是7*24小时运营,如果数据库启动用户操作上也会有感受的,所以可以肯定是没有重启过的呢

to magicluo
监控服务一直启用的,jdbc driver没有更换过。
压力测试有进行过的,高峰时期业务操作是没有感受的,是因为一次和关联系统的同步出现异常所以才关注到日志这个报错的呢。
高峰时期并发800~900人

to iaskengineer
已经联系DBA组和网络组去查询后台记录了。

以上,有进展可能还需要各位指点,总之非常感谢呢!

#10


连接池问题,并发太大导致获取不到连接,可以自己做下压测去看看

#11


该回复于2011-04-19 15:05:21被版主删除

#12


引用 8 楼 nokiaisacat 的回复:
把数据库连接池的容量放大一点,可能是连接用完了


对头!

#1


平时连接正常那说明应该连接代码是正常的,如果你这种情况是偶尔的,去查下数据库的启动时间,以前我遇见过数据库管理员在不通知的情况下重启数据库了的。。。。。

#2


你oracle监听服务启用了没有啊

jdbc driver 有没有换过试试

另,你们的系统没有经过压力测试嘛?  高峰就挂掉,并发多少啊?

#3


。。。网卡挂了。。。

。。你们网卡的吞吐量多少的饿,服务器好歹搞个千兆网卡沙

#4


引用 3 楼 x19881216 的回复:
。。。网卡挂了。。。

。。你们网卡的吞吐量多少的饿,服务器好歹搞个千兆网卡沙


网卡这么水啊

现在最屁也是千兆的吧  再说了

能有多大数据量让网卡转发数据包失败,怀疑

#5


引用 4 楼 magicluo 的回复:
引用 3 楼 x19881216 的回复:
。。。网卡挂了。。。

。。你们网卡的吞吐量多少的饿,服务器好歹搞个千兆网卡沙


网卡这么水啊

现在最屁也是千兆的吧  再说了

能有多大数据量让网卡转发数据包失败,怀疑


嘿嘿

#6


这个是数据库连接失败,多是由于数据库端的问题,要么数据库重启了,要不那边连接满了无法接受新的连接,不管如何,DBA都应能查出相应时间有何异常

-------------------------------------------------
爱问易 - 非官方技术支持互助平台
http://www.iaskengineer.com
-------------------------------------------------
几块钱就能解决的问题,何必困扰好几天?
-------------------------------------------------

#7


引用 3 楼 x19881216 的回复:
。。。网卡挂了。。。

。。你们网卡的吞吐量多少的饿,服务器好歹搞个千兆网卡沙


网络的可能性也有,硬件问题比较少,遇到过的就是网络阻塞,需要网络管理员查记录

#8


把数据库连接池的容量放大一点,可能是连接用完了

#9


TO zyz1985
因为系统是7*24小时运营,如果数据库启动用户操作上也会有感受的,所以可以肯定是没有重启过的呢

to magicluo
监控服务一直启用的,jdbc driver没有更换过。
压力测试有进行过的,高峰时期业务操作是没有感受的,是因为一次和关联系统的同步出现异常所以才关注到日志这个报错的呢。
高峰时期并发800~900人

to iaskengineer
已经联系DBA组和网络组去查询后台记录了。

以上,有进展可能还需要各位指点,总之非常感谢呢!

#10


连接池问题,并发太大导致获取不到连接,可以自己做下压测去看看

#11


该回复于2011-04-19 15:05:21被版主删除

#12


引用 8 楼 nokiaisacat 的回复:
把数据库连接池的容量放大一点,可能是连接用完了


对头!