Elsa Core
版本:3.2.0
现象:使用接口批量触发启动带定时器的流程,会使得内存占用飙升,我的触发启动了40个流程,内存从600M直接飙升到8G
上面提到是“带定时器”的流程,是因为在github的issue中已经有人提出,跟我的有点像,但是只是标识为bug,未解决。
下面是这个issue的链接:
https://github.com/elsa-workflows/elsa-core/issues/5312
提醒:经过测试,当流程finish的时候,并没有释放内存!!!
解决办法(非官方,自行摸索,不保证有效):
1、猜测是因为定时器常驻内存中导致,使用Elsa.QuartZ替换默认的计划任务配置(且使用数据库进行持久化-重要!)
// Use timer activities.
elsa.UseQuartz(quartz => {
quartz.UsePostgreSql(postgreSqlConnectionString);
});
elsa.UseScheduling(scheduling => scheduling.UseQuartzScheduler());
2、计划任务的组件有很多,Start At、Timer、Cron等,其中只有Cron是用到了Elsa.QuartZ,所以流程中的组件必须全部是Cron,否则仍然会常驻内存(重要)
3、以上两个设置完,内存基本保持在1G左右