4

挿入の速度を上げるために考えられることはすべて試しました。これは、実際には改善されていないほんの2、3のことです。

キューに送信する必要がある識別子 (Int64) のチャンクがあり、複数のワーカー ロールが並行性を気にせずに作業できるようにします。

foreachループを試しました(.ToString()との両方BitConverter.GetBytes()):

foreach(long id in ids) {
    queue.AddMessage(new CloudQueueMessage(id.ToString() /*BitConverter.GetBytes(id)*/));
}

そして Parallel .ForAll<T>():

ids.AsParallel().ForAll(id => queue.AddMessage(new CloudMessage(id.ToString())));

同じデータセンター内のローカルと WorkerRole の両方から、挿入は 1 秒あたり 5 回まで、平均 4.73 回までです。

私は何か間違ったことをしていますか?

シンプソンズ

4

2 に答える 2

14

tcp スタックで Nagle を無効にしてみてください。これは小さなパケットをバッファリングするため、コンテンツの送信に 1/2 秒以上の遅延が発生します。これをロールの開始コードに入れます。

ServicePointManager.UseNagleAlgorithm = false; 
于 2013-10-22T17:21:09.957 に答える