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

问题描述 投票:0回答:3

我正在根据请求使用CloudBlockBlob更新大量的CloudBlobClient(它总是相同的blob)。

BlobEndpoint的参数设置如下:

blobEndpoint.UseNagleAlgorithm<-false
blobEndpoint.ConnectionLimit<-1000
//blobEndpoint.MaxIdleTime<-Timeout.Infinite

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

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

谢谢

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

azure azure-storage azure-storage-blobs
3个回答
0
投票

需要一定程度的并行性才能实现稳定的高吞吐量。看看你是否可以利用qazxsw poi。

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(); 所依据的东西,所以你知道这是一项严肃的事业。


0
投票

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

在blob端点上工作得比maxconnection好得多。


0
投票

根据ConnectionLimit你应该配置https://github.com/Azure/azure-storage-net-data-movement/blob/master/README.md设置。

该文章建议将其设置为您的处理器数量8次,如下所示:

ServicePointManager.DefaultConnectionLimit

ServicePointManager.DefaultConnectionLimit = Environment.ProcessorCount * 8;类使用内部CloudBlobClient,它使用此设置。

© www.soinside.com 2019 - 2024. All rights reserved.