2017-01-13 1 views
1

私はこのようにクライアント側のキューに100個のタスクをプッシュします。サーバーでfirebase-queue、作業者がタスクを受け取る速度に遅れがあります

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秒かかります。私の労働者が仕事をより早く受け取れる方法はありますか?クライアントに要求を送信するためにキューを使用したい。しかし、キューの現在の速度では、私は多くの同時ユーザーをサポートすることはできません。私は50,000人の同時ユーザーをサポートすることを検討しています。

答えて

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(); 
}) 

しかし、約9秒で100を通って走ったが、5人の同時労働者では約5秒で終了。私はブランドi7のチップを搭載した新しい13" MacBookProによ

キューが設定される前に、私はこれを行うことによって、私のベンチマークを実行するために、パフォーマンス、今使用:。

var start = now(); 

と直接ノードサーバによって提供される要求と比較すると、これは、キュー内の決意()

console.log(((now()-start)/1000).toFixed(3)); 
+0

9秒100のための作業の後に、まだ非常に高いです。李ここでは、要求を受け取る速度自体が非常に遅いので、私はワーカー/サーバーマシンではないと思います。 – Pankaj

+0

私はそれがまだ遅いことに同意し、その規模のタイプでは、メッセージキューのための他のソリューションを検討する必要があると確信しています。 –

関連する問題