第一次连接db2时,出现超时情况

bug描述:在几天没连接数据库后,突然连接数据库,比如说,2月1日--2月5日都没有连接数据库,在2月6日连接数据库并且往里面插入数据时,会出现连接超时的情况。而且只有第一次连接超时,也就是说在连接超时之后的几分钟,就会恢复正常。下面是我的后台报的错:
2011 SQL:insert into joy.systh(linedate,linetime,linephone,phonereserved,endstatus,status,type) values (?,?,?,?,?,?,?)
com.ibm.db2.jcc.c.DisconnectException: [ibm][db2][jcc][t4][2030][11211] A communication error has been detected. Communication protocol being used: TCP/IP.
Communication API being used: SOCKETS.  Location where the error was detected: T4Agent.sendRequest().
Communication function detecting the error: OutputStream.flush().  Protocol specific error codes Connection timed out, *, 0.  Message: Connection timed out

at com.ibm.db2.jcc.b.a.a(a.java:362)

at com.ibm.db2.jcc.b.a.y(a.java:331)

at com.ibm.db2.jcc.b.a.l(a.java:289)

at com.ibm.db2.jcc.c.j.c(j.java:253)

at com.ibm.db2.jcc.c.gg.d(gg.java:2257)

at com.ibm.db2.jcc.c.gg.W(gg.java:457)

at com.ibm.db2.jcc.c.gg.executeUpdate(gg.java:440)

at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)

at flow.subflow.CallbackOrWait_PS.save2.servletImplementation(save2.java:73)

at com.avaya.sce.runtime.BasicServlet.handleRequest(BasicServlet.java:99)

at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:75)

at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:247)

at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:165)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

at java.lang.Thread.run(Thread.java:619)
Caused by: java.net.SocketException: Connection timed out

at java.net.SocketOutputStream.socketWrite0(Native Method)

at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

at com.ibm.db2.jcc.b.jb.b(jb.java:1631)

at com.ibm.db2.jcc.b.jb.a(jb.java:1606)

at com.ibm.db2.jcc.b.a.y(a.java:325)

... 25 more
java.sql.SQLException: Already closed.

at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:77)

at org.apache.commons.dbcp.PoolingDriver$PoolGuardConnectionWrapper.close(PoolingDriver.java:240)

at flow.CMBTravelHotel.freeConnection(CMBTravelHotel.java:178)

at flow.subflow.CallbackOrWait_PS.save2.servletImplementation(save2.java:88)

at com.avaya.sce.runtime.BasicServlet.handleRequest(BasicServlet.java:99)

at com.avaya.sce.runtime.AppServlet.processRequest(AppServlet.java:75)

at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:247)

at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:165)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

at java.lang.Thread.run(Thread.java:619)
参与11

10同行回答

627770633627770633IT支持上海沪嘉讯网络技术有限公司
回复 6# xxzmxx public static void StartPool() {  loadProperties ();  initDataSource ();  if(connectionPool != null)  {   ShutdownPool ();  }  try  {   GenericOb...显示全部
回复 6# xxzmxx

public static void StartPool()
{
  loadProperties ();
  initDataSource ();
  if(connectionPool != null)
  {
   ShutdownPool ();
  }
  try
  {
   GenericObjectPool connectionPool = new GenericObjectPool (null);
   connectionPool.setMaxIdle(4);
   connectionPool.setMaxWait(50000);
   connectionPool.setMinIdle(2);
   connectionPool.setMaxActive(4);
         byte value = 2;
         connectionPool.setWhenExhaustedAction(value);
   ConnectionFactory connectionFactory = new DriverManagerConnectionFactory (
    url,name,password);
   new PoolableConnectionFactory (connectionFactory,connectionPool,
    null,null,false,true);
   Class.forName ("org.apache.commons.dbcp.PoolingDriver");
   PoolingDriver driver = (PoolingDriver) DriverManager.getDriver ("jdbc:apache:commons:dbcp:");
   driver.registerPool (poolname,connectionPool);
   System.out.println ("-----Assembly connection pool----OK");
  }catch (Exception e)
  {
   e.printStackTrace ();
  }
}收起
IT分销/经销 · 2012-02-14
浏览2888
yhangwyhangw软件开发工程师wang
回复 1# 627770633    我想是客户端工具的问题。显示全部
回复 1# 627770633


   我想是客户端工具的问题。收起
互联网服务 · 2012-02-03
浏览2709
qqdzyhqqdzyh数据库管理员苏宁电器
这样好了   几天没连接后   先登录主机ACTIVE DATABASE   然后用应用连试下  怀疑是你JAVA配置的超时时间的问题显示全部
这样好了   几天没连接后   先登录主机ACTIVE DATABASE   然后用应用连试下  怀疑是你JAVA配置的超时时间的问题收起
2012-02-03
浏览2637
燕听雨燕听雨技术经理bankcomm
unix上可以考虑keepalive aix nosolaris nddhpux 我记不清了显示全部
unix上可以考虑keepalive
aix no
solaris ndd
hpux 我记不清了收起
金融其它 · 2012-02-03
浏览2719
marvelyumarvelyu软件开发工程师IBM
你的数据库是如何激活的?connect还是activate另外确认下客户端和服务器端的网络是否设置了相关的连接安全策略,如防火墙,路由器等显示全部
你的数据库是如何激活的?connect还是activate
另外确认下客户端和服务器端的网络是否设置了相关的连接安全策略,如防火墙,路由器等收起
互联网服务 · 2012-02-03
浏览2673
xxzmxxxxzmxx软件开发工程师招行软件中心
在你再次连接数据库时,库是否被人重启过。如果被重启过,那么分配资源的过程会比较缓慢,尤其在os还处于频繁活动的情况下。本身数据库新开辟连接是比较耗费资源的。如果你的系统经常出现首次连接超时现象,你贴一下db2diag日志,和你设置的超时时间。...显示全部
在你再次连接数据库时,库是否被人重启过。如果被重启过,那么分配资源的过程会比较缓慢,尤其在os还处于频繁活动的情况下。
本身数据库新开辟连接是比较耗费资源的。如果你的系统经常出现首次连接超时现象,你贴一下db2diag日志,和你设置的超时时间。收起
互联网服务 · 2012-02-03
浏览2768
cedarbirdcedarbird工程师CDI
Connection timed out. 有可能是长时间没活动连接被切掉了,再连的时候重新建了。昨天我做实验的时候遇到过类似的现象,NAT的设定是5分钟连接没活动就切,显示全部
Connection timed out.
有可能是长时间没活动连接被切掉了,再连的时候重新建了。
昨天我做实验的时候遇到过类似的现象,NAT的设定是5分钟连接没活动就切,收起
IT分销/经销 · 2012-02-02
浏览2750
weiruan85weiruan85数据库管理员ibm
db2diag.log pls显示全部
db2diag.log pls收起
政府机关 · 2012-02-02
浏览2696
627770633627770633IT支持上海沪嘉讯网络技术有限公司
回复 2# wp285562telnet到server上,sql是没有问题的。报错之后,再执行另外的操作,就能连接上了,只有第一次连接会连接超时。显示全部
回复 2# wp285562
telnet到server上,sql是没有问题的。
报错之后,再执行另外的操作,就能连接上了,只有第一次连接会连接超时。
收起
IT分销/经销 · 2012-02-02
浏览2682
wp28556259wp28556259软件架构设计师CMBC
TELNET到SERVER,手动连接然后执行一条SQL会有这样的错吗?是不是你JAVA连接池里连接对象的问题。要先确定是数据库的还是应用的问题呀显示全部
TELNET到SERVER,手动连接然后执行一条SQL会有这样的错吗?是不是你JAVA连接池里连接对象的问题。
要先确定是数据库的还是应用的问题呀收起
银行 · 2012-02-02
浏览2702

提问者

627770633
IT支持上海沪嘉讯网络技术有限公司

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2012-02-02
  • 关注会员:1 人
  • 问题浏览:11290
  • 最近回答:2012-02-14
  • X社区推广