【发布时间】:2016-06-11 06:01:20
【问题描述】:
我有一个 azure 存储队列,上面有超过 100,000 个队列项。完成每个项目的平均处理时间约为 1 分钟(如 WebJob 仪表板中所报告的)。
我已将 webJob 的最大批量大小设置为 32,如下所示:
JobHostConfiguration config = new JobHostConfiguration();
config.Queues.BatchSize = 32;
var host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
如果我将其设置为高于 32,webjob 将不会启动并在(等待重新启动和启动)之间不断翻转,所以我假设 32 是最大批量大小。
但是,我的应用服务计划以 4% 的 CPU 利用率运行。我已启用基于 CPU 使用情况的自动缩放。
我想要做的是弄清楚如何让 Web 作业并行执行更多任务,以便它可以在需要时开始使用更多的 CPU 使用率,并希望它能够自动扩展,然后处理更多。我可以利用哪些杠杆来让我的 WebJob 更好地利用我的应用服务计划实例?
【问题讨论】:
-
我遇到了同样的性能问题。无论我做什么,Webjobs 占用的 CPU 时间都不会超过 5%。即使使用虚假的 webjob 样本也会发生这种情况,该样本只会消耗高 CPU 进行近一分钟的排序和重新排序多次,而不是消耗 CPU 更有意义的项目列表。 5% 最大 CPU 使用率。 ...批次大小和批次阈值没有用,因为问题不在于从队列中获取批次,而只是使用机器中可用的 CPU。有什么想法吗?
标签: azure batch-processing azure-webjobs azure-webjobssdk