缓慢的编译Groovy脚本

相同的工作流的运行时间不一致之间的工作流的运行实例。你可以观察到这种行为之间有脚本任务当用户任务。通常情况下,脚本任务的执行时间较长,当你第一次运行工作流部署后或后重新启动应用程序。

导致

每个脚本任务之前必须编译运行。编译的过程是将代码转换为可执行的指令,可以花一些时间。为了避免编译的代码相同的脚本每次运行一个工作流,它存储编译的Groovy引擎缓存脚本为进一步使用。因此,缓存脚本,已经有一个更短的执行时间比不是在缓存中。脚本执行时间更长时间:

  • 后首次运行工作流部署它。
  • 你重启后第一次运行工作流应用程序。
  • Java垃圾收集器清除Groovy引擎缓存。通常,这当内存低。

因素,增加了执行时间

一般来说,更多的代码编译需要更长的时间。可以注意到这个当工作流包含大量Groovy脚本或连续几个脚本任务不被任何用户的任务。

另一个常见的情况是有大量的脚本代码groovy-lib目录,直接在应用程序中,您可以使用该脚本的方法在任何Groovy脚本的任务。在这种情况下,即使你不使用这些方法,整个内容groovy-lib目录添加到每个脚本任务在编译之前,这就增加了编译时间。

如何减少执行时间

  • 避免使用普通groovy-lib目录的脚本没有使用大量的任务。这些脚本在工作流Groovy脚本的任务。
  • 避免分手Groovy脚本任务为每个API调用当所有可以做在一个脚本的任务。
  • 在可能的情况下,有一个管理员运行工作流后,其他用户之前,特别是在以下情况下:
    • 部署一个新版本的工作流。运行的具体工作流程。
    • 后重新启动平台。运行所有工作流。

    这可能影响数据。

长期解决方案

在我们的下一代平台,我们计划改变这种行为和编译代码在工作流部署,减少运行时间之间的明显不一致相同的工作流实例。