首页 文章

spring批处理分区性能问题

提问于
浏览
0

我们有一个 Spring 季批处理工作,我们试图处理大约1000万条记录 . 现在在单线程中执行此操作将非常缓慢,因为我们必须匹配SLA .

为了提高性能,我们开发了一个POC,其中主要步骤是创建分区,其中每个分区代表一个唯一的产品ID . 这可以在500到4500之间的任何地方 . 在POC中,我们有500个这样独特的产品 . 现在每个分区都有一个prod id并且在它上面进行操作 . 所有这一端到底工作正常 .

我们注意到主步骤需要超过5分钟才能将分区信息发送到步骤执行请求 . 我的意思是,主步骤生成分区和第一个分区执行步骤之间的差异超过5分钟 .

可能导致这种缓慢的原因是什么? Spring 季批量框架在这5分钟内做了什么?

以下是在5分钟内执行这么多时间的3个选项

SELECT JOB_EXECUTION_ID, START_TIME, END_TIME, STATUS, EXIT_CODE, EXIT_MESSAGE, CREATE_TIME, LAST_UPDATED, VERSION, JOB_CONFIGURATION_LOCATION from BATCH_JOB_EXECUTION where JOB_INSTANCE_ID = ? order by JOB_EXECUTION_ID desc;

SELECT JOB_EXECUTION_ID,KEY_NAME,TYPE_CD,STRING_VAL,DATE_VAL,LONG_VAL,DOUBLE_VAL,从BATCH_JOB_EXECUTION_PARAMS中识别JOB_EXECUTION_ID =?;从BATCH_STEP_EXECUTION中选择STEP_EXECUTION_ID,STEP_NAME,START_TIME,END_TIME,STATUS,COMMIT_COUNT,READ_COUNT,FILTER_COUNT,WRITE_COUNT,EXIT_CODE,EXIT_MESSAGE,READ_SKIP_COUNT,WRITE_SKIP_COUNT,PROCESS_SKIP_COUNT,ROLLBACK_COUNT,LAST_UPDATED,VERSION,其中JOB_EXECUTION_ID =?按STEP_EXECUTION_ID排序;

1 回答

  • 0

    查看您的作业存储库配置 . 一旦 Partitioner 为每个从步创建了 ExecutionContext ,主设备就会为每个从设备创建 StepExecution ,然后再将其发送给要处理的从设备 . 因此滞后可能是由于将所有这些 StepExecution 插入到您的作业存储库中 . 作为后续行动,请确保您使用的是最新版本 . 不久前进行了优化(批量插入执行而不是逐个执行) .

相关问题