【问题标题】:Hangfire Load Balance between Servers服务器之间的 Hangfire 负载平衡
【发布时间】:2019-10-31 13:27:08
【问题描述】:

我有 3 个 Hangfire 服务器,它们都连接到同一个数据库。每晚一次,我有一个 Recurring 作业,会触发多个 Enqueued 作业。

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

这样可以平衡负载吗?

【问题讨论】:

    标签: hangfire


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的反馈;但是,似乎同一台服务器上的多个作业会争夺资源。我的解决方案是使用 hangfire 队列系统,当部署 hangfire 服务器时,它会查看两个队列 1 默认队列和另一个与服务器同名的队列,只是一些 GUID。然后在我安排作业之前,我会检查每个队列的状态并将作业分配给作业最少的队列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    相关资源
    最近更新 更多