Spring批处理多线程默认限制为10?

时间:2016-12-02 16:32:39

标签: java multithreading spring-batch

我正在使用TaskExecutorPartitionHandler将我的工作分成多个PartitionStep(由gridSize控制),并且还使用SimpleAsyncTaskExecutor在每个步骤中异步处理(由{控制) {1}})。

到目前为止,如果concurrencyLimit足够大(让我们说50),我发现最大并发处理整个批处理作业仅限于{{1 }}

通过进一步测试,我确定该公式中的concurrencyLimit可以通过min(10, gridSize * 4)的{​​{1}}方法进行修改。

但是,即使我将4throttleLimit()配置为更大的值,整体并发性也不会超过SimpleStepBuilder有谁知道我可以在哪里配置该限制?

P.S。我正在以编程方式配置作业,而不是使用XML。

1 个答案:

答案 0 :(得分:1)

有点晚了,但请尝试检查您是否使用 HikariCP,它具有默认的 10 个同时数据库连接限制

刚刚遇到类似问题并通过增加 spring.datasource.hikari.maximum-pool-size

解决

见:Number of parallel threads processing is capped to 10 with Spring Batch