问题描述
项目中使用了quartz1.6.5版本,一直在was上运行的很稳定,有一天突然发生如下错误:[14-2-128:22:34:326CST]00000030LocalDataSourEorg.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandlermanageMisfireHandler:Errorhandlingmisfires:FailedtoobtainDBconnectionfromdatasource'springNonTxDataSource.IMESScheduler':com.ibm.websphere.ce.cm.StaleConnectionException:Io异常:ConnectionresetDSRA0010E:SQL状态=null,错误代码=17,002org.quartz.JobPersistenceException:FailedtoobtainDBconnectionfromdatasource'springNonTxDataSource.IMESScheduler':com.ibm.websphere.ce.cm.StaleConnectionException:Io异常:ConnectionresetDSRA0010E:SQL状态=null,错误代码=17,002[Seenestedexception:com.ibm.websphere.ce.cm.StaleConnectionException:Io异常:ConnectionresetDSRA0010E:SQL状态=null,错误代码=17,002]atorg.quartz.impl.jdbcjobstore.JobStoreCMT.getNonManagedTXConnection(JobStoreCMT.java:167)atorg.quartz.impl.jdbcjobstore.JobStoreSupport.doRecoverMisfires(JobStoreSupport.java:3108)atorg.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.manage(JobStoreSupport.java:3887)atorg.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.run(JobStoreSupport.java:3907)Causedby:com.ibm.websphere.ce.cm.StaleConnectionException:Io异常:ConnectionresetDSRA0010E:SQL状态=null,错误代码=17,002atsun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeMethod)atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)atjava.lang.reflect.Constructor.newInstance(Constructor.java:522)atcom.ibm.websphere.rsadapter.GenericDataStoreHelper.mapExceptionHelper(GenericDataStoreHelper.java:525)atcom.ibm.websphere.rsadapter.GenericDataStoreHelper.mapException(GenericDataStoreHelper.java:580)atcom.ibm.ws.rsadapter.AdapterUtil.mapException(AdapterUtil.java:2160)atcom.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:1683)atcom.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:1256)atcom.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1990)atcom.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1662)atcom.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2363)atcom.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:934)atcom.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:610)atcom.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:449)atcom.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:418)atsun.reflect.GeneratedMethodAccessor906.invoke(UnknownSource)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:618)atorg.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301)atorg.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)at$Proxy5.getConnection(UnknownSource)atorg.springframework.scheduling.quartz.LocalDataSourceJobStore$2.getConnection(LocalDataSourceJobStore.java:125)atorg.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:112)atorg.quartz报数据库连接不了,但过了十几分钟后,数据库又能连接的上,系统恢复正常(没有任何人为操作),看数据库监控那边,SELECT*FROMQUARTZ_LOCKSWHERELOCK_NAME=:1FORUPDATE这句话占用很高的连接数,但这个表是在quartz中使用的,对应用系统不可见,这是不是quartz内部的BUG引起的,望路过的大牛答疑解惑,谢谢!
解决方案
解决方案二:
是不是又未及时释放的链接啊
解决方案三:
可能定时任务突然数据量大,要看定时怎么写的导致链接无法释放。。
解决方案四:
你看看quartz的数据源怎么设置的?
解决方案五:
quartz调用的操作数据库的方法没有释放连接,和quartz没关系吧quartz只是定时任务。
解决方案六:
楼主这种应该系统可靠性和稳定性的问题,估计看代码真心找不出来原因,你看你的那句sql是在哪里打出来的,在那边看看代码可能的性能问题
解决方案七:
查询超时?占用很高的连接数,具体啥意思?
解决方案八:
没遇到过这样的问题帮顶
解决方案九:
楼主,问题解决没有啊?遇到类似问题了