Hangfire配合Redis RDB任务创建吞吐量远低于官方值问题咨询
可能的配置疏漏点
- 未开启Hangfire.Pro.Redis的批量操作配置:你需要在Hangfire的Redis配置中加上
UseBatchProcedures(),默认该配置未开启,开启后批量插入任务的吞吐量会有数量级提升。 - 用了单条任务插入而非批量API:如果你的测试逻辑是循环调用
BackgroundJob.Enqueue单条插入,单次网络往返只能提交一个任务,吞吐量上限天然很低,改用IBackgroundJobClient.CreateBatch批量提交多个任务可以大幅降低网络开销。 - Redis持久化配置不符合测试基准:官方6000/秒的测试基于RDB持久化,如果你开启了AOF且设置为
appendfsync always,写入性能会下降90%以上,建议测试时调整为和官方一致的RDB持久化策略。 - 额外组件拖慢性能:如果配置了全局任务过滤器、任务参数序列化用了复杂对象的JSON序列化、开启了任务执行日志自动记录等附加功能,都会额外消耗任务创建阶段的性能。
- Redis部署方式问题:官方测试用的是本地同机器部署的Redis实例,如果你用的是跨机房、云托管带额外网络开销的Redis实例,延迟升高会直接拉低吞吐量。
实际生产环境吞吐量参考
相同版本栈下,单机Redis本地部署、开启批量操作、任务仅带简单字符串参数、批量提交的场景下,稳定吞吐量可以达到5000-5800/秒,和官方测试数据基本一致。如果是单条逐个插入的场景,200-300/秒属于正常水平。
内容的提问来源于stack exchange,提问作者Martin Volek
相关产品推荐
相关产品推荐

