You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java批处理任务异常:__TimerPool连接池无法获取连接及执行器缓慢问题

问题分析与解决方案

问题背景

我在CentOS 6系统的Glassfish 4.1(Build 13)上配置了一个基于Chunk的XML JBatch任务,即使在高负载下也能稳定运行。但近期在CentOS 7系统上采用相同Glassfish版本及默认配置部署后,任务运行及完成出现严重问题:执行速度明显缓慢,且持续出现一系列连接池相关错误。

报错日志

[2018-05-14T06:05:28.079+0300] [glassfish 4.1] [SEVERE] [poolmgr.component_register_exception] [javax.enterprise.resource.resourceadapter.com.sun.enterprise.resource.rm] [tid: _ThreadID=209 _ThreadName=concurrent/batchDispatchExecutor-managedThreadFactory-Thread-5] [timeMillis: 1526267128079] [levelValue: 1000] [[ 
RAR5029:注册组件时出现意外异常 javax.transaction.RollbackException at com.sun.jts.jta.TransactionImpl.registerSynchronization(TransactionImpl.java:305) at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.startJTSTx(JavaEETransactionManagerSimplified.java:439) at com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate.enlistLAOResource(JavaEETransactionManagerJTSDelegate.java:318) at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.enlistResource(JavaEETransactionManagerSimplified.java:356) at com.sun.enterprise.resource.rm.ResourceManagerImpl.registerResource(ResourceManagerImpl.java:152)....
]]
[2018-05-14T06:05:28.080+0300] [glassfish 4.1] [WARNING] [poolmgr.err_enlisting_res_in_getconn] [javax.enterprise.resource.resourceadapter.com.sun.enterprise.resource.pool] [tid: _ThreadID=209 _ThreadName=concurrent/batchDispatchExecutor-managedThreadFactory-Thread-5] [timeMillis: 1526267128080] [levelValue: 900] [[ RAR7132: 无法在事务中登记资源,将资源返回至连接池。连接池名称: [ __TimerPool ]]]
[2018-05-14T06:05:28.080+0300] [glassfish 4.1] [WARNING] [poolmgr.get_connection_failure] [javax.enterprise.resource.resourceadapter.com.sun.enterprise.connectors] [tid: _ThreadID=209 _ThreadName=concurrent/batchDispatchExecutor-managedThreadFactory-Thread-5] [timeMillis: 1526267128080] [levelValue: 900] [[ RAR5117 : 无法从连接池 [ __TimerPool ] 获取/创建连接。原因: com.sun.appserv.connectors.internal.api.PoolingException: javax.transaction.RollbackException]]
[2018-05-14T06:05:28.081+0300] [glassfish 4.1] [WARNING] [jdbc.exc_get_conn] [javax.enterprise.resource.resourceadapter.com.sun.gjc.spi] [tid: _ThreadID=209 _ThreadName=concurrent/batchDispatchExecutor-managedThreadFactory-Thread-5] [timeMillis: 1526267128081] [levelValue: 900] [[ RAR5114 : 分配连接出错 : [分配连接失败,原因: javax.transaction.RollbackException]]]
[2018-05-14T06:05:28.081+0300] [glassfish 4.1] [WARNING] [] [com.ibm.jbatch.container.services.impl] [tid: _ThreadID=209 _ThreadName=concurrent/batchDispatchExecutor-managedThreadFactory-Thread-5] [timeMillis: 1526267128081] [levelValue: 900] [[ 未找到executionId: 306对应的任务实例状态]]

疑问

  1. __TimerPool连接池为何无法释放连接?
  2. 执行器服务为何运行缓慢?

针对疑问1:__TimerPool连接池无法释放连接的原因及解决办法

从报错里的javax.transaction.RollbackException能定位到核心问题在事务登记环节,结合CentOS 7和6的环境差异,主要有这几个诱因:

  • 系统环境事务兼容性问题:CentOS 7的内核、系统依赖库和CentOS 6存在差异,Glassfish 4.1的JTS事务管理器在新环境下处理事务同步登记时触发异常,导致事务被提前标记为回滚状态。连接池尝试将连接登记到已回滚的事务时失败,最终无法正常回收连接,造成连接池耗尽。
  • 内置连接池默认配置不足:__TimerPool是Glassfish的系统内置连接池,默认的最大连接数、超时时间等配置在CentOS 7的高负载场景下不够用。一旦事务异常导致连接无法释放,池内可用连接会快速被占满。
  • JBatch任务事务边界管理不当:如果Chunk型JBatch任务的reader/writer环节出现未捕获的异常,会触发事务回滚,但Glassfish连接池在这种异常场景下的连接回收逻辑没有正常工作。

解决建议:

  • 调整__TimerPool配置:在Glassfish管理控制台找到该连接池,增大最大连接数(比如从默认8调至32),设置合理的连接超时时间(30秒)和闲置超时时间(60秒),确保连接能被及时回收。
  • 修复事务异常:检查JBatch任务代码,确保Chunk处理逻辑中捕获并处理异常,避免事务被意外标记回滚;同时在Glassfish事务配置里延长transaction-timeout参数,防止任务处理超时触发事务回滚。
  • 适配CentOS 7环境:给JVM添加-Dcom.sun.jts.enableTCCL=true参数,解决事务管理器在新环境下的类加载问题;也可以更新Glassfish的相关依赖库,提升环境兼容性。

针对疑问2:执行器服务运行缓慢的原因及解决办法

执行器变慢是连接池耗尽引发的连锁反应,再结合环境差异还有这些细节:

  • 当__TimerPool连接被耗尽后,JBatch任务的执行线程会阻塞在获取连接的操作上,大量线程等待连接释放,直接导致任务执行效率急剧下降,表现为执行器运行缓慢。
  • CentOS 7的CPU调度策略、内存管理机制和CentOS 6不同,如果Glassfish的batchDispatchExecutor线程池配置没有适配新环境,会降低线程调度效率,进一步加剧执行缓慢的问题。

解决建议:

  • 优先解决__TimerPool的连接释放问题,这是执行缓慢的根源。
  • 调整执行器线程池配置:在Glassfish中找到concurrent/batchDispatchExecutor,根据服务器CPU核心数设置核心线程数和最大线程数(比如CPU核心数的2-4倍),确保线程调度能充分利用系统资源。
  • 优化JVM参数:针对CentOS 7增大JVM堆内存(比如-Xmx4g),改用G1垃圾收集器,减少GC停顿对任务执行的影响。

内容的提问来源于stack exchange,提问作者kosgeinsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:35:19