1

我像这样将 100 个任务推送到客户端的队列中。

var ref = firebase.database().ref('queue/tasks');
for(var i = 0;i<100;i++){
 ref.push({'foo': 'bar',i:i})
};

在服务器上,我的工人看起来像这样

var queue = new Queue(ref, function(data, progress, resolve, reject){
  console.log(data);
  resolve();
}

问题是要完成所有任务的处理,大约需要60 秒,这太慢了。有什么方法可以让我的员工更快地接收任务。我想为我的客户端使用队列向服务器发送请求。但是以目前队列的速度,我将无法支持很多并发用户。我希望支持 50k 并发用户。

4

1 回答 1

1

我注意到的一件事是您没有传入任何选项,并且您可以设置多个将同时从队列中拉出的工作人员。

options = {
  'numWorkers': 5,
  'sanitize': false,
  'suppressStack': true,
}    
var queue = new Queue(ref, options, function(data, progress, resolve, reject){
  console.log(data);
  resolve();
})

然而,虽然我确实注意到我的机器上的速度有所提高,但我的进程在 1 个工作人员的情况下在大约 9 秒内运行了 100 个,但在 5 个并发工作人员的情况下,它在大约 5 秒内完成。

我正在使用带有 i7 芯片的全新 13 英寸 MacBookPro。

在设置队列之前,我使用 performance-now 来执行我的基准测试:

var start = now();

这在队列中的resolve()之后

console.log(((now()-start)/1000).toFixed(3));
于 2017-01-13T20:54:58.920 回答