我们的应用程序是使用Spring Batch应用程序设计的。 因此,问题在于从主实例向JMS MQ发送消息时,收到以下错误。
场景是
1)300K数据, 2)创建了50个分区, 3)2个实例-> 1(主/从),1(从)
logLevel=WARN thread=[workerJmsContainer-20]
category=jms.listener.DefaultMessageListenerContainer message - Execution
of JMS message listener failed, and no ErrorHandler has been set.
java.lang.OutOfMemoryError: GC overhead limit exceeded
"VM Thread" os_prio=0 tid=0x00007fa87cb0f800 nid=0x5b56 runnable
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007fa87c5c8000 nid=0x5b31 runnable
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007fa87c603000 nid=0x5b32 runnable
"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007fa87c044800 nid=0x5b33 runnable
"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007fa87c5c6800 nid=0x5b34 runnable
Heap
object space 699392K, 51% used
Metaspace used 89620K, capacity 92552K, committed 93164K, reserved 1130496K
class space used 10647K, capacity 11144K, committed 11264K, reserved 1048576K
与MQ团队一起验证,队列中没有限制,并且从他们的角度来看也没有失败。
这些是yml文件中的设置
spring:
taskExecutor:
corePoolSize: 50
maxPoolSize: 100
queueCapacity: 1000
partition:
gridSize: 50
ChunkSize: 1000
concurrentConsumers: 25