【问题标题】:.Net Core Hangfire - Increase worker count.Net Core Hangfire - 增加工人数量
【发布时间】:2018-05-16 12:01:33
【问题描述】:

我有一个带有 Hangfire 实现的 .Net Core 应用程序。

每分钟有一个重复的工作如下:-

RecurringJob.AddOrUpdate<IS2SScheduledJobs>(x => x.ProcessInput(), Cron.MinuteInterval(1));

var hangfireOptions = new BackgroundJobServerOptions
            {
                WorkerCount = 20,
            };
            _server = new BackgroundJobServer(hangfireOptions);

ProcessInput() 内部会检查一些要处理的 Id 的 BlockingCollection(),它会不断地处理。

有一段时间,前十个 ProcessInput() 作业会继续处理 10 个工作人员,而其他新的 ProcessInput() 作业会排队。

为此,我想增加工作人员的数量,比如大约 50 个,以便并行处理 50 个 ProcessInput() 作业。

请提出建议。 谢谢。

【问题讨论】:

  • 默认情况下,它使用的线程数(工作线程)是每个处理器计数 5 个。最多 20 个。

标签: parallel-processing .net-core worker hangfire


【解决方案1】:

在 .NET Core 版本中,您可以在添加 Hangfire Server 时设置工作人员数量:

services.AddHangfireServer(options => options.WorkerCount = 50);

【讨论】:

    【解决方案2】:

    您可以尝试使用此方法增加工作进程。您必须知道服务器上运行的处理器数量。要获得 100 个工人,你可以试试

    var options = new BackgroundJobServerOptions { WorkerCount = Environment.ProcessorCount * 25 };
    app.UseHangfireServer(options);
    

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多