Spring Batch中远程分区的性能问题

时间:2019-05-29 19:45:46

标签: java spring spring-batch

我们的应用程序是使用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

0 个答案:

没有答案