2013-10-22 121 views
3

我尝试了所有我能想到的方法来提高插入速度。这只是一些没有改进的事情。如何加速Azure存储队列

我有大量的标识符(Int64),我需要发送到一个队列,以便我的多个工作人员角色可以工作,而不必担心并发。

我已经尝试了foreach循环(均含有.ToString()BitConverter.GetBytes()):

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

和并联.ForAll<T>()

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

无论是从本地和WorkerRole同一数据中心内,所述插入最大值为每秒5个,平均每秒4.73个。

我做错了什么?

Simpsons

+0

你试图添加的消息有多大? –

+0

@PeterRitchie 2字节或6字节取决于方法(BitConverter vs ToString) –

回答

10

尝试TCP栈上禁用的Nagle,因为这缓冲器小分组,导致1/2秒延迟航运内容的向上。把它放在你的角色起始代码中:

ServicePointManager.UseNagleAlgorithm = false; 
+2

而这篇博文增加了David的答案:http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle -s-algorithm-is-not-friendly-toward-small-requests.aspx :) –

+2

你应该看看Sandrino di Mattia的答案:http://stackoverflow.com/questions/12750302/how-to-achive-more -10-插入每秒与 - 天青存储桌/ 12750535#12750535。他深入David的回应。 –

+3

巨大的差异,4.73至250(眼球估计)/秒 –

相关问题