Spring 批处理作业挂起 - 并发步骤和每个步骤使用多个线程
Spring Batch Job hangs - concurrent steps and each step using multiple threads
我正在使用 Spring 批处理处理来自数据库 tables 的记录,使用以下场景:
- 使用 5 个并行步骤同时处理来自 5 table 秒的数据
- 每个并行步骤还有 5 个线程来处理来自单个 table
的记录
这里是作业配置的总结:TestJob -> Parallel Step1 & Step2 -> Step 1 using 2 threads, Step 2 using 2 threads
对于 Spring 批处理 tables 我尝试使用 SQL 服务器数据库,内存数据库中的 HSQL 但是不知何故 Spring 批处理卡住了BATCH_STEP_EXECUTION_SEQ
Spring 批量尝试插入 BATCH_STEP_EXECUTION table 所以试图从 BATCH_STEP_EXECUTION_SEQ table 它挂起的地方获取 ID。
我正在使用 Spring Boot 2.2.2.RELEASE 版本。我尝试使用不同的创建隔离级别覆盖 jobrepository 配置,但问题始终存在。
注意:
在以下时间一切正常:
- 一次处理并发 table 秒,每个 table 由单个线程处理
- 一次处理单个 table 并且单个 table 由多个线程处理
非常感谢任何 help/pointer 解决问题。
谢谢,
哈克里山
只是为了可能面临同样问题的其他人着想。问题似乎与数据库特定表和序列的配置有关。我尝试使用 SQL 服务器,默认提供的数据库脚本仍然存在问题。然后我再次尝试使用 Hsql 内存数据库问题仍然存在。然后我尝试使用 H2 内存数据库并且它可以使用它。它还适用于 MapJobRepositoryFactoryBean。
因此您可能需要根据数据库调整 DDL。
谢谢!
我正在使用 Spring 批处理处理来自数据库 tables 的记录,使用以下场景:
- 使用 5 个并行步骤同时处理来自 5 table 秒的数据
- 每个并行步骤还有 5 个线程来处理来自单个 table 的记录
这里是作业配置的总结:TestJob -> Parallel Step1 & Step2 -> Step 1 using 2 threads, Step 2 using 2 threads
对于 Spring 批处理 tables 我尝试使用 SQL 服务器数据库,内存数据库中的 HSQL 但是不知何故 Spring 批处理卡住了BATCH_STEP_EXECUTION_SEQ Spring 批量尝试插入 BATCH_STEP_EXECUTION table 所以试图从 BATCH_STEP_EXECUTION_SEQ table 它挂起的地方获取 ID。
我正在使用 Spring Boot 2.2.2.RELEASE 版本。我尝试使用不同的创建隔离级别覆盖 jobrepository 配置,但问题始终存在。
注意: 在以下时间一切正常:
- 一次处理并发 table 秒,每个 table 由单个线程处理
- 一次处理单个 table 并且单个 table 由多个线程处理
非常感谢任何 help/pointer 解决问题。
谢谢, 哈克里山
只是为了可能面临同样问题的其他人着想。问题似乎与数据库特定表和序列的配置有关。我尝试使用 SQL 服务器,默认提供的数据库脚本仍然存在问题。然后我再次尝试使用 Hsql 内存数据库问题仍然存在。然后我尝试使用 H2 内存数据库并且它可以使用它。它还适用于 MapJobRepositoryFactoryBean。
因此您可能需要根据数据库调整 DDL。
谢谢!