春季启动工作的执行时间

时间:2018-10-11 23:03:44

标签: performance spring-boot spring-batch

我正在尝试计算春季批处理作业的总时间。我用弹簧靴来触发这项工作。在春季启动触发春季批处理作业之前,作业需要的数据源和其他bean由春季启动配置,这会花费一些时间。我是否应该考虑这段时间来计算Spring Boot作业执行所需的总时间,因为它使用Spring Boot配置的数据源和bean?

2 个答案:

答案 0 :(得分:0)

  

我是否也应该考虑这次计算总时间   通过春季启动工作

简单的答案是否定的。除非您重新连接数据源并在每次执行作业时刷新配置。

当您说应用程序(启动或批处理)已启动并准备执行时,这意味着所有组件都已初始化,相关性已解决,连接已建立,并且它只是在等待任务/触发器开始执行。

这意味着,数据源配置或上下文设置所花费的时间不属于作业执行时间。

答案 1 :(得分:0)

  

我还应该考虑这次来计算Spring Boot作业执行所需的总时间

这取决于您要测量的内容。如果要衡量整个spring boot应用程序的执行时间(从操作系统的角度来看,是运行JVM进程的总时间),那么是的,您需要包括所有内容。

如果仅想测量Spring Batch作业的执行时间,则可以使用JobExecutionListener,例如:

class ExecutionTimeJobListener implements JobExecutionListener {

   private Logger logger = LoggerFactory.getLogger(ExecutionTimeJobListener.class);
   private StopWatch stopWatch = new StopWatch();

   @Override
   public void beforeJob(JobExecution jobExecution) {
      stopWatch.start();
   }

   @Override
   public void afterJob(JobExecution jobExecution) {
      stopWatch.stop();
      logger.info("Job took " + stopWatch.getTotalTimeSeconds() + "s");
   }
} 
相关问题