zhangsheng 发表于 2024-3-7 23:44:49

9.0.103流程超时设置的资源开销

本帖最后由 zhangsheng 于 2024-3-8 00:09 编辑

需要在很多流程中设置节点超时执行命令,不知道这个功能是否用到定时器,担心过多定时线程占用服务器资源严重影响性能
所以关心以下问题:
1、流程中有部分设置超时,系统每次检查对象是全部流程实例,还是仅设置超时的流程?
2、系统判断流程是否超时,是全部检查对象一个定时器,还是每个流程实例一个定时器(应该不太可能,还是确认下)?
3、超时设置可选“分”“时”“天”,是否对应分、时、天的不同定时器?
4、如果等待执行超时流程实例的常态存量数量级是10000或者更高,多线程资源占用规模是否可接受?




WalkingCorpse 发表于 2024-3-7 23:44:50

-- 1、流程中有部分设置超时,系统每次检查对象是全部流程实例,还是仅设置超时的流程?
流程的超时任务存储在ACT_RU_TIMER_JOB 表中,没创建一个带有超时设置的流程实例这里就多一条。

-- 2、系统判断流程是否超时,是全部检查对象一个定时器,还是每个流程实例一个定时器(应该不太可能,还是确认下)?
超时设置有专门的后台线程定时扫描,应该只有一个扫描线程,扫描到超时任务需要执行后,构建一个 TimerJob 丢给执行队列,由执行线程执行

-- 3、超时设置可选“分”“时”“天”,是否对应分、时、天的不同定时器?
不是,所有类型的超时设置都写入了一个表,是否需要执行都由检测线程判断

-- 4、如果等待执行超时流程实例的常态存量数量级是10000或者更高,多线程资源占用规模是否可接受?
超时任务的执行线程是固定数量的,不会存在 10000 个超时任务创建 10000 个异步线程,内部有队列控制

zhangsheng 发表于 2024-3-8 11:43:52

本帖最后由 zhangsheng 于 2024-3-8 11:45 编辑

一个线程还是扫描一个固定表,哪怕每分钟一检测更新执行队列,超时设置自身资源占用也是很低的。
没有这个顾虑,就可以大面积采用超时设置了。
谢谢格友的耐心讲解!

Grayson.Shang 发表于 2024-3-8 12:00:23

感谢大佬支持,学到了:hjyzw:
页: [1]
查看完整版本: 9.0.103流程超时设置的资源开销