首页 > 解决方案 > 服务器之间的 Hangfire 负载平衡

问题描述

我有 3 个 Hangfire 服务器,它们都连接到同一个数据库。每晚一次,我有一个重复的工作,它将触发多个排队工作。

例如,我有服务器 A、B 和 C,晚上 10 点,我的重复作业在服务器 A 上运行,它将 15 个后台作业排入队列。但是,所有 15 个作业都将在服务器 A 上处理。我希望 A 上有 5 个作业,B 上有 5 个作业,C 上有 5 个作业。

是否可以像这样平衡负载?

标签: hangfire

解决方案


除了将每台服务器上的工作人员数量限制为 5 之外,第一个可用的工作人员将继续接手工作。QueuePollInterval 也参与其中。如果轮询时间长于您将有一台服务器的工作人员选择的工作。让它太小也可能导致对 db 的过度读取(当心)。

但是,只要您没有资源争用,您应该让服务器继续以当前行为运行。


推荐阅读