C# Blob代码下载速度比MS Azure Storage Explorer慢得多
我正在从blob存储下载一个1GB大小的blob 如果我使用msazure存储资源管理器,它需要不到10分钟的时间(我有一个20兆的下线) 但是,当我使用代码时:C# Blob代码下载速度比MS Azure Storage Explorer慢得多,c#,azure,azure-storage-blobs,azure-blob-storage,C#,Azure,Azure Storage Blobs,Azure Blob Storage,我正在从blob存储下载一个1GB大小的blob 如果我使用msazure存储资源管理器,它需要不到10分钟的时间(我有一个20兆的下线) 但是,当我使用代码时: await blobRef.DownloadToFileAsync("D:\\temp\\data.mdf", FileMode.Create); (我也尝试过使用内存流)下载250MB需要一个多小时(在这一点上我杀死了它)。我已经做过多次这个测试,而且一直都是这样 我还监控了网络流量 通过Storage Exlorer,向下的网
await blobRef.DownloadToFileAsync("D:\\temp\\data.mdf", FileMode.Create);
(我也尝试过使用内存流)下载250MB需要一个多小时(在这一点上我杀死了它)。我已经做过多次这个测试,而且一直都是这样
我还监控了网络流量
- 通过Storage Exlorer,向下的网络流量约为20兆比特
- 通过代码,向下的网络流量约为1Mgabit
编辑:我仍在使用旧版本的Azure Storage Explorer(1.4.1)。但是我可以确认新版本也会给出相同的结果。您应该指定您使用的是哪个版本的MS Azure Storage explorer 如果您使用的是一些较新版本的1.9.0/1.8.1/1.8.0等(请在此查找更多详细信息),那么Azure Storage Explorer将与之集成,它将使用为获得最佳性能而设计的简单命令。因此,您可以在下载/上载等方面具有良好的性能
当使用代码下载/上传blob时,您可以使用此代码。此库基于为AzCopy提供动力的核心数据移动框架,AzCopy还为您提供高性能上传和下载。我最终尝试了@Ivan和@mjwills提出的两种解决方案:
- 结果是10分钟12秒
- 结果是9分钟35秒
与DownloadToFileAsync相比,这种方法的好处是可以并行(同时)下载文件的多个“切片”。这对于通过快速internet连接的大型文件来说是有益的(在大多数情况下,我希望它会快4-8倍)。如何“避免使用async void。返回类似public async TaskDownloadAsync(字符串路径,字符串[]名称)的任务,以便您可以等待该方法“我没有async void”。它是异步主目录中的异步方法。可能不同的加密或zip方法我可以确认此行为。通过MS Azure Storage explorer下载我的文件01:09.87,但通过DownloadToFileAsync方法,需要03:04:01。也许他们正在Azure Storage Explorer中将下载分块,然后进行并行下载?我仍在使用旧版本的Storage Explorer(1.4.1)。因此,不可能是azcopy起作用,但我会尝试一下您的建议。@Murdock,请在您的帖子中指定storage explorer的版本:)