本文目录#

Chunk 模式回顾#

Spring Batch 的 Chunk 模式通过 ItemReaderItemProcessorItemWriter 组合批处理任务。Chunk 大小、事务边界、并发配置直接影响吞吐与失败恢复能力。

性能优化要点#

  • 合理的 chunkSize
    • IO 密集型任务:20~100;
    • CPU 密集型任务:5~20;
    • 通过 JMeter/自定义压测寻找 Sweet Spot。
  • 事务策略:使用 ResourcelessTransactionManager 在无需数据库事务时降低开销;
  • 分页读取:对数据库 Reader 使用 PagingItemReaderJdbcCursorItemReader,并开启流式读取;
  • 并行处理
    • TaskExecutor + SimpleAsyncTaskExecutor 实现多线程 Step;
    • Partitioner 将大任务拆分多个 Step 并行执行。
  • 容错重试:配置 retryLimitskipLimit,结合死信队列处理失败记录。

监控与调试#

  • 利用 Spring Batch Actuator (/actuator/batch) 获取 Step 状态;
  • Micrometer 指标 spring.batch.jobspring.batch.step
  • 通过 JFR/Async-profiler 分析 Processor 热点。

自检清单#

  • 是否为 Chunk 的 Reader/Writer 使用流式实现避免一次性加载?
  • 是否根据失败场景设置重试/跳过策略并记录?
  • 是否在生产中监控 Step 执行时间与吞吐趋势?

参考资料#


本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。