、Node.js非同期並列 - 結果は何ですか?コードがある
async.series(tasks, function (err) {
return callback ({message: 'tasks execution error', error: err});
});
、tasks
は、その各々がHTTPリクエスト(request
モジュールを使用)、(MongoHQインスタンスに)データを格納するためにMongoDBのAPIを呼び出すをpeforms関数の配列です。私の現在の入力、(〜200タスクが実行する)で
、それは
[normal mode] collection cycle: 1356.843 sec. (22.61405 mins.)
をとる。しかし、単純にparallel
からseries
からの変更をしようと、それは壮大な利益を与えます。 ~23 mins
ではなく、~30 secs
でほぼ同じ量のタスクが実行されます。
しかし、何も無料であることを知って、私はその変化の結果を理解しようとしていますか?開いているソケットの数がはるかに多く、メモリ消費量が多く、DBサーバーに多くの負荷がかかることは分かりますか?
私はコードを実行するマシンは1GBのRAM Ubuntuなので、私はそのアプリケーションが一度だけハングアップするので、リソースが足りないことが原因ですか?
パフォーマンスを向上させるには、おそらく 'async.parallelLimit(array、limit、cb)'を調整して使用するべきです。実行をオーバーフローさせない並列実行の制限を見つけると、async.parallelより速くなります:Pボーナスとして、もうハングしません:) – randunel