Microsoft Azure Blob存储上载性能



我正在运行一个Azure web角色,它将非常小的Blob存储到Azure存储中。(Blob上传是从服务器上完成的,而不是从浏览器上。)我已经在堆栈溢出和互联网上搜索了优化Blob存储性能的技巧,我相信我已经检查并实现了所有常见的怀疑:上传异步,允许无限制的传出web连接(这现在似乎是web角色的默认设置,不再需要在web.config或代码中显式设置)。

调整我允许的并发上传数量会有所不同,但无论我尝试了什么,我似乎都能达到每秒1000次左右的最大上传量。这是在Azure web角色中运行时,与存储帐户位于同一区域(美国东部)。当我在家里通过良好的互联网连接运行时,我的速率不会低很多,大约700 blobs/sec,这似乎告诉我,限制速率的不是网络延迟,而是存储服务的实际处理时间。

对于这种服务,我通常不会认为这些速率很糟糕,但我读到Microsoft号称每秒约20000个存储事务的速率,所以我对这些结果有点失望。

我想从那些真正试图突破blob存储限制的人那里得到一些反馈。每秒大约1000次小上传听起来对吗?或者我可能还应该做些什么来改善这一点?如果需要的话,我会发布代码,但我不想收到推测性的答案,我想听听开发人员的意见,他们可以确认我的结果是合理的,或者他们看到了更高的吞吐量。

我应该补充一点,我目前正在以一个小的网络角色运行这个。我也试过在中等网络角色中使用它,但没有发现任何显著的差异。

编辑:经过几天的开发和测试,我的上传率似乎突然提高了。不是很多,但可能会以每秒200左右的速度增加。在浏览网页时,我注意到Azure文档中有一条评论:"存储帐户会随着使用量的增加而自动扩展。">所以我想知道它是否真的能够实现更高的速率,但在看到持续的高容量之前不会自动扩展。如能对此予以确认,也将不胜感激。

根据您的请求有多小,问题可能是由Nagle的算法对小请求不友好引起的——尽管我通常在队列/表操作中看到这种情况。试着禁用Nagle,如果有什么不同,请告诉我。作为fyi,您必须在建立连接之前禁用它,否则更改将不会生效。

Jason

最新更新