Azure:配置BlobEndpoint和CloudBlobClient以获得最大上载吞吐量

时间:2017-02-27 16:51:37

标签: azure azure-storage azure-storage-blobs

我正在使用6每个请求更新大量var1(它总是相同的blob)。

CloudBlockBlob的参数设置如下:

CloudBlobClient

我注意到,经过一段时间后,每秒更新次数降低到非常低的速度,我想这是由于可用连接的数量。

您是否建议对具有一定级别并行性的多个请求使用相同的blob客户端?可能是端点参数的不同配置?

由于

编辑1: 我尝试在所有线程中使用单个客户端,但行为完全相同。一开始吞吐量非常高,然后连接数量大幅下降并稳定在非常低的水平。这就像活动连接不被回收,它们会被blob客户端丢失。

2 个答案:

答案 0 :(得分:0)

实现稳定的高吞吐量需要一定程度的并行性。 看看您是否可以利用Azure Storage Data Movement library

// Use the interfaces from the new Azure Storage Data Movement Library to upload the blob
// Setup the number of the concurrent operations
TransferManager.Configurations.ParallelOperations = 64;

// Setup the transfer context and track the upoload progress
TransferContext context = new TransferContext();
context.ProgressHandler = new Progress<TransferProgress>((progress) =>
{
    Console.WriteLine("Bytes uploaded: {0}", progress.BytesTransferred);
});

// Upload a local blob
var task = TransferManager.UploadAsync(
    sourcePath, destBlob, null, context, CancellationToken.None);
task.Wait();

AzCopy所基于的东西,所以你知道这是一项严肃的事情。

答案 1 :(得分:0)

我找到的解决方案是在system.net中将maxconnection设置为1000。

比blob端点上的ConnectionLimit工作得更好。