Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir uygulama Java 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.
Yüklemeler için performans optimizasyonu
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 ölçek hedefleri.
Karşıya yüklemeler için aktarım seçeneklerini ayarlayın
Veri aktarımı işlemlerinin performansını artırmak için ParallelTransferOptions içindeki değerleri yapılandırabilirsiniz. Aşağıdaki değerler, uygulamanızın gereksinimlerine göre karşıya yüklemeler için ayarlanabilir:
- maxSingleUploadSize: Tek bir yükleme isteği için bayt cinsinden maksimum blob boyutu.
- blockSize: Her istek için aktarım için en büyük blok boyutu.
- maxConcurrency: 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.
maksimumTekBaşınaYüklemeBoyutu
maxSingleUploadSize değeri, tek bir istekte karşıya yüklenecek en büyük blob boyutunu bayt cinsinden belirtir. Bu değer aşağıdaki yöntem kullanılarak ayarlanabilir:
Veri boyutu maxSingleUploadSize'dan küçük veya buna eşitse, blob tek bir Put Blob isteğiyle karşıya yüklenir. Blob boyutu maxSingleUploadSize değerinden büyükse veya blob boyutu bilinmiyorsa, blob bir dizi Blok Koy çağrısı ve ardından Blok Listesi Koy kullanılarak öbekler halinde karşıya yüklenir.
Belirttiğiniz değerin için blockSizemaxSingleUploadSize unutmayın.
maxSingleUploadSize 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, maxSingleUploadSize'nin, tanımladığınız blockSize değerine en azından eşit, hatta daha büyük olmasını istersiniz. 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.
Eğer durumunuz için en uygun değeri seçmekte emin değilseniz, güvenli bir seçenek maxSingleUploadSize'yı blockSize ile aynı değere ayarlamak olacaktır.
blockSize
Değer blockSize , blok blobunu öbekler halinde karşıya yüklerken bayt cinsinden aktarımın uzunluk üst sınırıdır. Bu değer aşağıdaki yöntem kullanılarak ayarlanabilir:
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 maxSingleUploadSizeblockSize.
Verilerin verimli bir şekilde ilerlemesini sağlamak için istemci kitaplıkları bazen her aktarımda blockSize değerine 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, "Blob depolama için ölçek hedefleri" tablosuna bakınız.
maksimum eşzamanlılık
Değer maxConcurrency , tek bir paralel aktarımın parçası olarak herhangi bir zamanda verilen en fazla paralel istek sayısıdır. Bu değer aşağıdaki yöntem kullanılarak ayarlanabilir:
Kod örneği
Aşağıdaki import yönergesine sahip olduğunuzdan emin olun ki ParallelTransferOptions yükleme için kullanılabilsin.
import com.azure.storage.blob.models.*;
Aşağıdaki kod örneğinde ParallelTransferOptions değerlerinin nasıl ayarlanacağı ve blobUploadFromFileOptions örneğinin parçası olarak seçeneklerin nasıl eklanacağı gösterilmektedir . Bir dosyadan karşıya yükleme yapmıyorsanız, BlobParallelUploadOptions kullanarak benzer seçenekleri ayarlayabilirsiniz. Bu örnekte sağlanan değerler bir öneri olarak tasarlanmamıştır. Bu değerleri düzgün ayarlamak için uygulamanızın belirli gereksinimlerini dikkate almanız gerekir.
ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions()
.setBlockSizeLong((long) (4 * 1024 * 1024)) // 4 MiB block size
.setMaxConcurrency(2)
.setMaxSingleUploadSizeLong((long) 8 * 1024 * 1024); // 8 MiB max size for single request upload
BlobUploadFromFileOptions options = new BlobUploadFromFileOptions("<localFilePath>");
options.setParallelTransferOptions(parallelTransferOptions);
Response<BlockBlobItem> blockBlob = blobClient.uploadFromFileWithResponse(options, null, null);
Bu örnekte, setMaxConcurrency yöntemini kullanarak paralel aktarım çalışanlarının maksimum sayısını 2 olarak ayarlıyoruz. Ayrıca setMaxSingleUploadSizeLong yöntemini kullanarak maxSingleUploadSize'yi 8 MiB olarak ayarladık. 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, yöntemini kullanarak ayarladığımız en büyük öbek boyutu 4 MiB olan öbekler halinde setBlockSizeLong karşıya yüklenir.
Karşıya yüklemeler için performansla ilgili dikkat edilmesi gerekenler
Karşıya yükleme sırasında Depolama istemci kütüphaneleri, ParallelTransferOptions tarafından tanımlanan yapılandırma seçeneklerine göre verilen bir karşıya yükleme akışını birden çok alt yüklemeye böler. Her alt yüklemenin REST işlemine özel bir çağrısı vardır. Bir BlobClient nesne için bu işlem Put Block işlemidir. 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 maksimum boyutu, block_size'in 50.000 katıdır.
Karşıya yüklemeler sırasında tampon
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ış yüklemelerinde dayanıklılığı sağlamak için depolama istemcisi kütüphaneleri, yükleme işlemine başlamadan önce her bir 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ışı, verileri sırayla yüklerken bile blockSize için daha küçük bir değer düşünmek için bir nedendir. 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. Eğer belirli bir boyuttaki veri aktarımları sırasında sık sık zaman aşımları yaşıyorsanız, blockSize değerini azaltmak arabelleğe alma süresini azaltır ve performansı iyileştirebilir.
İndirmeler için performans ayarlama
Veri aktarımı seçeneklerinin düzgün ayarlanması, indirmeler için güvenilir performansın anahtarıdır. Depolama aktarımları, içinde ParallelTransferOptionstanımlanan değerlere göre birkaç alt iletide bölümlenir.
İndirmeler için aktarım seçeneklerini ayarlama
İndirmeler için aşağıdaki değerler uygulamanızın gereksinimlerine göre ayarlanabilir:
-
blockSize: Her istek için aktarım için en büyük blok boyutu. setBlockSizeLong yöntemini kullanarak bu değeri ayarlayabilirsiniz. -
maxConcurrency: Tek bir paralel aktarımın parçası olarak herhangi bir zamanda verilen en fazla paralel istek sayısı. setMaxConcurrency yöntemini kullanarak bu değeri ayarlayabilirsiniz.
Kod örneği
Aşağıdaki import yönergesine sahip olduğunuzdan emin olun ki ParallelTransferOptions indirme için kullanılsın.
import com.azure.storage.common.*;
Aşağıdaki kod örneğinde ParallelTransferOptions değerlerinin nasıl ayarlanacağı ve blobDownloadToFileOptions örneğinin parçası olarak seçeneklerin nasıl eklanacağı gösterilmektedir .
ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions()
.setBlockSizeLong((long) (4 * 1024 * 1024)) // 4 MiB block size
.setMaxConcurrency(2);
BlobDownloadToFileOptions options = new BlobDownloadToFileOptions("<localFilePath>");
options.setParallelTransferOptions(parallelTransferOptions);
blobClient.downloadToFileWithResponse(options, null, null);
İndirmeler için performansla ilgili dikkat edilmesi gerekenler
İndirme sırasında Depolama istemci kitaplıkları, tarafından ParallelTransferOptionstanımlanan yapılandırma seçeneklerine göre belirli bir indirme isteğini birden çok alt yüke böler. Her alt indirmenin, REST işlemine kendine ait bir ç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.
Sonraki adımlar
- Bu makale, Java için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Uygulamanızı derleme bölümünde geliştirici kılavuzu makalelerinin tam listesine bakın.
- 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.