关于quartz中占满数据库连接问题

chendianVista 2014-02-13 09:42:37
项目中使用了quartz1.6.5版本,一直在was上运行的很稳定,有一天突然发生如下错误:
[14-2-12 8:22:34:326 CST] 00000030 LocalDataSour E org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler manage MisfireHandler: Error handling misfires: Failed to obtain DB connection from data source 'springNonTxDataSource.IMESScheduler': com.ibm.websphere.ce.cm.StaleConnectionException: Io 异常: Connection resetDSRA0010E: SQL 状态 = null,错误代码 = 17,002
org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'springNonTxDataSource.IMESScheduler': com.ibm.websphere.ce.cm.StaleConnectionException: Io 异常: Connection resetDSRA0010E: SQL 状态 = null,错误代码 = 17,002 [See nested exception: com.ibm.websphere.ce.cm.StaleConnectionException: Io 异常: Connection resetDSRA0010E: SQL 状态 = null,错误代码 = 17,002]
at org.quartz.impl.jdbcjobstore.JobStoreCMT.getNonManagedTXConnection(JobStoreCMT.java:167)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.doRecoverMisfires(JobStoreSupport.java:3108)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.manage(JobStoreSupport.java:3887)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.run(JobStoreSupport.java:3907)
Caused by: com.ibm.websphere.ce.cm.StaleConnectionException: Io 异常: Connection resetDSRA0010E: SQL 状态 = null,错误代码 = 17,002
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:522)
at com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapExceptionHelper(GenericDataStoreHelper.java:525)
at com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapException(GenericDataStoreHelper.java:580)
at com.ibm.ws.rsadapter.AdapterUtil.mapException(AdapterUtil.java:2160)
at com.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:1683)
at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:1256)
at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1990)
at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1662)
at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2363)
at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:934)
at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:610)
at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:449)
at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:418)
at sun.reflect.GeneratedMethodAccessor906.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
at $Proxy5.getConnection(Unknown Source)
at org.springframework.scheduling.quartz.LocalDataSourceJobStore$2.getConnection(LocalDataSourceJobStore.java:125)
at org.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:112)
at org.quartz

报数据库连接不了,但过了十几分钟后,数据库又能连接的上,系统恢复正常(没有任何人为操作),看数据库监控那边,SELECT * FROM QUARTZ_LOCKS WHERE LOCK_NAME = :1 FOR UPDATE 这句话占用很高的连接数,但这个表是在quartz中使用的,对应用系统不可见,这是不是quartz内部的BUG引起的,望路过的大牛答疑解惑,谢谢!
...全文
2382 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
密码测试 2014-07-14
  • 打赏
  • 举报
回复
楼主,问题解决没有啊?遇到类似问题了
放纵的青春 2014-02-21
  • 打赏
  • 举报
回复
没遇到过这样的问题 帮顶
别闹腰不好 2014-02-13
  • 打赏
  • 举报
回复
quartz 调用的操作数据库的方法没有释放连接,和quartz没关系吧 quartz 只是定时任务。
loveunittesting 2014-02-13
  • 打赏
  • 举报
回复
你看看quartz的数据源怎么设置的?
jiekou0704 2014-02-13
  • 打赏
  • 举报
回复
可能定时任务突然数据量大,要看定时怎么写的导致链接无法释放。。
  • 打赏
  • 举报
回复
是不是又未及时释放的链接啊
ylovep 2014-02-13
  • 打赏
  • 举报
回复
查询超时? 占用很高的连接数,具体啥意思?
zyrobert 2014-02-13
  • 打赏
  • 举报
回复
楼主这种应该系统可靠性和稳定性的问题,估计看代码真心找不出来原因,你看你的那句sql是在哪里打出来的,在那边看看代码可能的性能问题

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧