java Spring批处理多线程默认限制为10隐式?
我使用TaskExecutorPartitionHandler
将我的作业划分为多个PartitionStep
(由gridSize
控制),并且还使用SimpleAsyncTaskExecutor
在每个步骤中异步处理(由concurrencyLimit
控制)
到目前为止,如果concurrencyLimit
足够大(比如说50),我观察到整个批处理作业的最大并发处理量仅限于min(10, gridSize * 4)
通过进一步测试,我确定公式中的4
可以通过SimpleStepBuilder
的throttleLimit()
方法修改
但是,即使我将gridSize
和throttleLimit
配置为一些更大的值,总体并发性也不会超过10
有人知道我可以在哪里配置该限制吗强>
另外,我是以编程方式配置作业,而不是使用XML
# 1 楼答案
有点晚了,但请尝试检查您是否正在使用HikariCP,它有一个默认的10同时DB连接限制
只是面临着类似的问题,并通过增加
spring.datasource.hikari.maximum-pool-size
来解决见:Number of parallel threads processing is capped to 10 with Spring Batch