yuzd / Hangfire.HttpJob

httpjob for Hangfire,restful api for Hangfire,job调度与业务分离
https://github.com/yuzd/Hangfire.HttpJob/wiki
MIT License
620 stars 184 forks source link

Q: 关于周期性Job执行频率的疑惑 #162

Closed KamenRiderKuuga closed 2 years ago

KamenRiderKuuga commented 2 years ago

您好,对于周期性Job的执行频率,我有一些疑惑的地方,目前我使用了代码仓库里面的RedisHangfire项目作为调度器,利用代码循环创建了1000个每秒执行的调度任务,用于调度一个API项目,并且在这个API项目里对每10秒的调度次数进行统计

前提条件:RedisHangfire项目的SchedulePollingInterval是1秒,并且使用压测工具测试API项目时,能够正确统计出调用次数

image

目前让人感到困惑的是,如果整个流程按照相对理想的状态进行,每1秒HTTP API应该被调度1000次左右,但是实际统计出来的情况是在每10秒500-800次之间,并且这个数量在增加集群的调度器数量之后也不会增加,面板上也没有看到调度失败的结果

image

因为目前在对主流的几种作业调度中心做比较,从而选出比较合适的方案,目前对这个测试的结果抱有疑惑,主要是担心真正当项目中的任务达到一定的数量时是否会出现调度不到的情况,如果我的测试方式不正确还望指出!

测试过程中用到的代码(包括前面提到的RedisHangfire,循环创建任务的代码,测试调度情况的API项目): https://github.com/KamenRiderKuuga/ProjectForReproduce/tree/main/DispatchCenterBenchmark

yuzd commented 2 years ago

这个点提的很好 我也确实没有做过这方面的测试 我感觉是和调度的逻辑有关系 你有对比过hangfire本身调度会怎样的差异?