Aracılığıyla paylaş


JavaScript ile karşıya yüklemeler ve indirmeler için performans ayarlama

Bir uygulama JavaScript için Azure Depolama istemci kitaplığını kullanarak veri aktardığında, hızı, bellek kullanımını ve hatta isteğin başarısını veya başarısızlığını etkileyebilecek çeşitli faktörler vardır. Veri aktarımlarında performansı ve güvenilirliği en üst düzeye çıkarmak için, uygulamanızın çalıştığı ortama göre istemci kitaplığı aktarım seçeneklerini yapılandırma konusunda proaktif olmak önemlidir.

Bu makalede, veri aktarımı seçeneklerini ayarlamayla ilgili dikkat edilmesi gereken bazı noktalar açıklanır. düzgün ayarlandığında, istemci kitaplığı verileri birden çok istek arasında verimli bir şekilde dağıtabilir ve bu da gelişmiş işlem hızı, bellek kullanımı ve ağ kararlılığı ile sonuçlanabilir.

Karşıya yüklemeler için performans ayarlama

Veri aktarımı seçeneklerinin düzgün ayarlanması, karşıya yüklemeler için güvenilir performansın anahtarıdır. Depolama aktarımları, bu bağımsız değişkenlerin değerlerine göre birkaç alt iletide bölümlenir. Desteklenen maksimum aktarım boyutu işleme ve hizmet sürümüne göre değişir, bu nedenle sınırları belirlemek için belgeleri gözden geçirin. Blob depolama için aktarım boyutu sınırları hakkında daha fazla bilgi için bkz . Blob depolama için hedefleri ölçeklendirme.

Karşıya yüklemeler için aktarım seçeneklerini ayarlama

Veri aktarımı işlemlerinin performansını artırmak için BlockBlobParallelUploadOptions içinde özellikleri yapılandırabilirsiniz. Aşağıdaki tabloda, yapılandırabileceğiniz özellikler ve bir açıklama listelenir:

Özellik Açıklama
blockSize Karşıya yükleme işleminin bir parçası olarak her istek için aktarım için en büyük blok boyutu. Daha fazla bilgi edinmek için bkz . blockSize.
maxSingleShotSize Verilerin boyutu bu değerden küçük veya bu değere eşitse, öbeklere ayırmak yerine tek bir yere yüklenir. Veriler tek bir çekimde karşıya yüklenirse blok boyutu yoksayılır. Varsayılan değer 256 MB'tır. Bu özelliği özelleştirirseniz, 256 MB'tan küçük veya buna eşit bir değer kullanmanız gerekir. Daha fazla bilgi edinmek için bkz . maxSingleShotSize.
concurrency Tek bir paralel aktarımın parçası olarak herhangi bir zamanda verilen en fazla paralel istek sayısı.

Not

İstemci kitaplıkları, sağlanmadıysa her veri aktarımı seçeneği için varsayılan değerleri kullanır. Bu varsayılanlar genellikle bir veri merkezi ortamında yüksek performanslıdır, ancak ev tüketicisi ortamları için uygun olmayabilir. Kötü ayarlanmış veri aktarımı seçenekleri aşırı uzun işlemlere ve hatta istek zaman aşımlarına neden olabilir. Bu değerleri test etmek ve uygulamanızın ve ortamınızın ihtiyaçlarına göre ayarlamak için proaktif olmak en iyisidir.

maxSingleShotSize

Değer maxSingleShotSize , tek bir isteğin karşıya yüklenmesi için bayt cinsinden en büyük blob boyutudur.

Verilerin boyutu değerinden küçük veya buna eşitse maxSingleShotSizeblob tek bir Put Blob isteğiyle karşıya yüklenir. Blob boyutu değerinden maxSingleShotSizebüyükse veya blob boyutu bilinmiyorsa, blob bir dizi Blok Koy çağrısı ve ardından Put Block Listile birlikte kullanılarak öbekler halinde karşıya yüklenir.

Belirttiğiniz değerin için blockSize maxSingleShotSizetanımladığınız değeri sınırlamadığını unutmayın. maxSingleShotSize bağımsız değişkeni, bir isteğin alt iletim olmadan tüm işlemi aynı anda gerçekleştirmesi için ayrı bir boyut sınırlaması tanımlar. Genellikle, büyük değilse için tanımladığınız blockSizedeğer kadar büyük olmak istersinizmaxSingleShotSize. Veri aktarımının boyutuna bağlı olarak, aktarım tek bir istekle tamamlandığından ve birden çok isteğin ek yükünü önlediği için bu yaklaşım daha yüksek performanslı olabilir.

Durumunuz için en uygun değerin hangisi olduğundan emin değilseniz, güvenli bir seçenek için blockSizekullanılan değere ayarlamaktırmaxSingleShotSize.

blockSize

Değer blockSize , blok blobunu öbekler halinde karşıya yüklerken bayt cinsinden aktarımın uzunluk üst sınırıdır.

Daha önce belirtildiği gibi, bu değer değerinden büyük blockSizeolabilecek değerini sınırlamazmaxSingleShotSize.

Verilerin verimli bir şekilde ilerlemesini sağlamak için istemci kitaplıkları her aktarım için her zaman değere blockSize ulaşamayabilir. İşleme bağlı olarak aktarım boyutu için desteklenen maksimum değer farklılık gösterebilir. Blob depolama için aktarım boyutu sınırları hakkında daha fazla bilgi için Bkz . Blob depolama için hedefleri ölçeklendirme.

Kod örneği

Aşağıdaki kod örneğinde BlockBlobParallelUploadOptions değerlerinin nasıl ayarlanacağı ve karşıya yükleme yöntemi çağrısının parçası olarak seçeneklerin nasıl eklendiği gösterilmektedir. Örneklerde sağlanan değerlerin bir öneri olması amaçlanmamıştır. Bu değerleri düzgün ayarlamak için uygulamanızın belirli gereksinimlerini dikkate almanız gerekir.

// Specify data transfer options
const uploadOptions = {
  blockSize: 4 * 1024 * 1024, // 4 MiB max block size
  concurrency: 2, // maximum number of parallel transfer workers
  maxSingleShotSize: 8 * 1024 * 1024, // 8 MiB initial transfer size
} 

// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);

// Upload blob with transfer options
await blockBlobClient.uploadFile(localFilePath, uploadOptions);

Bu örnekte, özelliğini kullanarak paralel aktarım çalışanlarının maksimum sayısını 2 olarak concurrency ayarlayacağız. Ayrıca 8 MiB olarak ayarlanmıştır maxSingleShotSize . Blob boyutu 8 MiB'den küçükse, karşıya yükleme işlemini tamamlamak için yalnızca tek bir istek gerekir. Blob boyutu 8 MiB'den büyükse blob, özelliğinde tanımladığımız en büyük öbek boyutu 4 MiB olan öbekler halinde blockSize karşıya yüklenir.

Karşıya yüklemeler için performansla ilgili dikkat edilmesi gerekenler

Karşıya yükleme sırasında Depolama istemci kitaplıkları, tarafından BlockBlobParallelUploadOptionstanımlanan yapılandırma seçeneklerine göre belirli bir karşıya yükleme akışını birden çok alt yüke böler. Her alt yükün REST işlemine kendi ayrılmış çağrısı vardır. Bu örnekte, işlem Blok Koy'dur. Depolama istemci kitaplığı, yüklemenin tamamını tamamlamak için bu REST işlemlerini paralel olarak yönetir (aktarım seçeneklerine bağlı olarak).

Not

Blok blobları en fazla 50.000 blok blok sayısına sahiptir. Blok blobunuzun boyutu üst sınırı 50.000 kezdir block_size.

Karşıya yüklemeler sırasında arabelleğe alma

Depolama REST katmanı, kaldığınız yerden REST karşıya yükleme işleminin algılanmasını desteklemez; tek tek aktarımlar tamamlanır veya kaybolur. Akış karşıya yüklemelerinde dayanıklılık sağlamak için Depolama istemci kitaplıkları, karşıya yüklemeyi başlatmadan önce her rest çağrısı için verileri arabelleğe alır. Ağ hızı sınırlamalarına ek olarak, bu arabelleğe alma davranışı sırayla karşıya yüklerken bile için blockSizedaha küçük bir değeri göz önünde bulundurmanın bir nedenidir. değerinin blockSize azaltılması, her istekte arabelleğe alınan maksimum veri miktarını ve başarısız bir isteğin her yeniden denemesini azaltır. Belirli bir boyuttaki veri aktarımları sırasında sık sık zaman aşımlarıyla karşılaşıyorsanız değerini blockSize azaltmak arabelleğe alma süresini azaltır ve daha iyi performansa neden olabilir.

İndirmeler için performans ayarlama

İndirmeler için veri aktarımı seçeneklerini ayarlama yalnızca downloadToBuffer yöntemi kullanılırken kullanılabilir. Bu yöntem blobu BlobDownloadToBufferOptions içinde tanımlanan değerlere göre arabelleğe paralel olarak indirir. Diğer indirme yöntemleri veri aktarımı seçeneklerini ayarlamayı desteklemez.

İndirmeler için aktarım seçeneklerini ayarlama

yöntemi kullanılırken downloadToBuffer indirmeler için aşağıdaki değerler ayarlanabilir:

  • blockSize: Her istek için aktarım için en büyük blok boyutu.
  • eşzamanlılık: Tek bir paralel aktarımın parçası olarak herhangi bir zamanda verilen en fazla paralel istek sayısı.

İndirmeler için performansla ilgili dikkat edilmesi gerekenler

kullanılarak downloadToBufferyapılan bir indirme sırasında, Depolama istemci kitaplıkları tarafından BlobDownloadToBufferOptionstanımlanan yapılandırma seçeneklerine göre belirli bir indirme isteğini birden çok alt indirmeye böler. Her alt indirmenin REST işlemine kendi ayrılmış çağrısı vardır. Aktarım seçeneklerine bağlı olarak, istemci kitaplıkları tam indirmeyi tamamlamak için bu REST işlemlerini paralel olarak yönetir.

Kod örneği

Aşağıdaki kod örneği, BlobDownloadToBufferOptions değerlerini ayarlamayı ve downloadToBuffer yöntemi çağrısının parçası olarak seçenekleri eklemeyi gösterir. Örneklerde sağlanan değerlerin bir öneri olması amaçlanmamıştır. Bu değerleri düzgün ayarlamak için uygulamanızın belirli gereksinimlerini dikkate almanız gerekir.

// Specify data transfer options
    const downloadToBufferOptions = {
        blockSize: 4 * 1024 * 1024, // 4 MiB max block size
        concurrency: 2, // maximum number of parallel transfer workers
    }

    // Download data to buffer
    const result = await client.downloadToBuffer(offset, count, downloadToBufferOptions);
  • Azure Depolama işlemlerinin performansını etkileyebilecek faktörler hakkında daha fazla bilgi edinmek için bkz . Blob depolamada gecikme süresi.
  • Blob depolama kullanarak uygulamaların performansını iyileştirmeye yönelik tasarım konuları listesini görmek için bkz . Blob depolama için performans ve ölçeklenebilirlik denetim listesi.