BLOB depolama için performans ve ölçeklenebilirlik denetim listesi

Microsoft, BLOB depolama ile yüksek performanslı uygulamalar geliştirmeye yönelik bir dizi kanıtlanmış uygulama geliştirmiştir. Bu denetim listesi, geliştiricilerin performansı iyileştirmek için izleyebildiği önemli uygulamaları tanımlar. Uygulamanızı tasarlarken ve işlem boyunca bu uygulamaları göz önünde bulundurun.

Azure Depolama kapasite, işlem hızı ve bant genişliği için ölçeklenebilirlik ve performans hedefleri içerir. Azure Depolama ölçeklenebilirlik hedefleri hakkında daha fazla bilgi için bkz. standart depolama hesapları için ölçeklenebilirlik ve performans hedefleri , Blob depolaması için ölçeklenebilirlik ve performans hedefleri.

Denetim Listesi

Bu makale, blob Storage uygulamanızı geliştirirken izleyebileceğiniz bir denetim listesi halinde performans için kanıtlanmış uygulamaları düzenler.

Bitti Kategori Tasarım değerlendirmesi
  Ölçeklenebilirlik hedefleri Uygulamanızı en fazla depolama hesabı sayısından daha fazla kullanmak üzere tasarlayabilmeniz gerekebilir mi?
  Ölçeklenebilirlik hedefleri Kapasite ve işlem sınırlarına yaklaşmaktan kaçınıyorsunuz musunuz?
  Ölçeklenebilirlik hedefleri Aynı anda tek bir bloba erişen çok sayıda istemci var mı?
  Ölçeklenebilirlik hedefleri Uygulamanız tek bir blob için ölçeklenebilirlik hedefleri içinde kalıyor mu?
  Bölümleme Adlandırma kuralınızın daha iyi yük dengelemesini sağlamak üzere tasarlandı mı?
  İstemci tarafı cihazlarda gereken performansa ulaşmak için yeterli yüksek bant genişliği ve düşük gecikme süresi var mı?
  İstemci tarafı cihazların yüksek kaliteli bir ağ bağlantısı var mı?
  İstemci uygulaması, depolama hesabıyla aynı bölgede mi?
  Doğrudan istemci erişimi Azure Depolama 'ye doğrudan erişim sağlamak için paylaşılan erişim imzaları (SAS) ve çıkış noktaları arası kaynak paylaşımı (CORS) kullanıyor musunuz?
  Önbelleğe Alma Uygulamanızın önbelleğe alınması sık erişilen ve nadiren değiştirilen verilerinize mı sahip?
  Önbelleğe Alma Uygulamanız, güncelleştirmeleri istemcide önbelleğe alarak ve daha sonra bunları daha büyük kümelere karşıya yükleyerek toplu olarak güncelleştirir mı?
  .NET yapılandırması En iyi performans için .NET Core 2,1 veya üstünü mi kullanıyorsunuz?
  .NET yapılandırması İstemcinizi yeterli sayıda eşzamanlı bağlantı kullanacak şekilde yapılandırdınız mı?
  .NET yapılandırması .NET uygulamaları için, .NET 'i yeterli sayıda iş parçacığı kullanacak şekilde yapılandırdınız mı?
  Paralellik Paralellik 'in, istemci yeteneklerini aşırı yüklemeden veya ölçeklenebilirlik hedeflerine yaklaşımak için uygun şekilde bağlanmış olduğunu merak etmeniz gerekir mi?
  Araçlar Microsoft tarafından sağlanmış istemci kitaplıklarının ve araçlarının en son sürümlerini kullanıyor musunuz?
  Yeniden deneme sayısı Daraltma hataları ve zaman aşımları için üstel geri alma ile yeniden deneme İlkesi kullanıyor musunuz?
  Yeniden deneme sayısı Uygulamanız yeniden denenmeyen hatalara karşı yeniden denemeyi önler mi?
  Blobları kopyalama Blob 'ları en verimli şekilde kopyaladığınızı biliyor musunuz?
  Blobları kopyalama Toplu kopyalama işlemleri için AzCopy 'ın en son sürümünü kullanıyor musunuz?
  Blobları kopyalama Büyük hacimli verileri içeri aktarmak için Azure Data Box ailesini kullanıyor musunuz?
  İçerik dağıtımı içerik dağıtımı için CDN kullanıyor musunuz?
  Meta verileri kullan Blob 'lar hakkında sık kullanılan meta verileri meta verilerinde depoluyorsanız mi?
  Hızlı karşıya yükleme Bir blobu hızlıca karşıya yüklemeye çalışırken blokları paralel olarak karşıya yüklüyor musunuz?
  Hızlı karşıya yükleme Çok sayıda blobu hızlıca yüklemeye çalışırken blob 'ları paralel olarak karşıya yüklüyor musunuz?
  Blob türü Uygun durumlarda sayfa Blobları mı kullanıyorsunuz, blob 'ları mi engelliyor?

Ölçeklenebilirlik hedefleri

Uygulamanız ölçeklenebilirlik hedeflerinin herhangi birini yaklaşırsa veya aşarsa, daha fazla işlem gecikmeleri veya azaltmasıyla karşılaşabilirler. Azure Depolama uygulamanızı kısıtreyorsa, hizmet 503 (sunucu meşgul) veya 500 (işlem zaman aşımı) hata kodları döndürmeye başlar. Ölçeklenebilirlik hedefleri sınırları içinde kalarak bu hatalardan kaçınmak, uygulamanızın performansını artırmanın önemli bir parçasıdır.

Kuyruk hizmeti ölçeklenebilirlik hedefleri hakkında daha fazla bilgi için bkz. Azure Depolama ölçeklenebilirlik ve performans hedefleri.

En fazla depolama hesabı sayısı

Belirli bir abonelik/bölge birleşimi için izin verilen en fazla depolama hesabı sayısına yaklaşdıysanız, senaryonuzu değerlendirin ve aşağıdaki koşullardan herhangi birinin uygulanıp uygulanmadığını saptayın:

  • Yönetilmeyen diskleri depolamak ve bu diskleri sanal makinelerinize (VM 'Ler) eklemek için depolama hesapları kullanıyor musunuz? Bu senaryo için, Microsoft yönetilen disklerin kullanılmasını önerir. Yönetilen diskler, tek tek depolama hesapları oluşturma ve yönetmeye gerek kalmadan otomatik olarak ve sizin için ölçeklendirilir. Daha fazla bilgi için bkz. Azure yönetilen disklere giriş
  • Veri yalıtımı amacıyla müşteri başına bir depolama hesabı kullanıyor musunuz? Bu senaryo için, Microsoft tüm depolama hesabı yerine her müşteri için bir blob kapsayıcısı kullanılmasını önerir. azure Depolama artık azure rollerini kapsayıcı başına temelinde atamanıza olanak tanır. Daha fazla bilgi için bkz. BLOB verilerine erişim Için Azure rolü atama.
  • Giriş, çıkış, saniye başına g/ç işlemi (ıOPS) veya kapasiteyi artırmak için birden fazla depolama hesabı kullanıyor musunuz? Bu senaryoda, Microsoft, mümkünse iş yükünüz için gereken depolama hesabı sayısını azaltmak üzere depolama hesapları için artan limitlerin avantajlarından yararlanmanızı öneriyor. Depolama Hesabınıza yönelik daha fazla limit istemek için Azure desteğine başvurun. Daha fazla bilgi için bkz. daha büyük, daha yüksek ölçekli depolama hesapları duyurusu.

Kapasite ve işlem hedefleri

Uygulamanız tek bir depolama hesabı için ölçeklenebilirlik hedeflerine yaklaşıyorsa, aşağıdaki yaklaşımlardan birini benimsede düşünün:

  • Uygulamanız işlem hedefini ziyaret etse, yüksek işlem ücretleri ve düşük ve tutarlı gecikme için iyileştirilmiş Blok Blob depolama hesapları kullanmayı düşünün. Daha fazla bilgi için bkz. Azure depolama hesabına genel bakış.
  • Uygulamanızın ölçeklenebilirlik hedefini yaklaşımını veya aşmasına neden olan iş yükünü yeniden değerlendirin. Daha az bant genişliği veya kapasite veya daha az işlem kullanmak için farklı bir şekilde tasarlayabilirsiniz mi?
  • Uygulamanız ölçeklenebilirlik hedeflerinin birini aşmanız gerekiyorsa, birden çok depolama hesabı oluşturun ve uygulama verilerinizi bu birden çok depolama hesabı genelinde bölümleyin. Bu kalıbı kullanırsanız, daha sonra yük dengelemeye yönelik daha fazla depolama hesabı ekleyebilmeniz için uygulamanızı tasarlayadığınızdan emin olun. Depolama hesapların, depolanan veri, işlem yapılan veya aktarılan veri açısından kullanımınızın dışında bir maliyeti yoktur.
  • uygulamanız bant genişliği hedeflerine yaklaşıyorsa, verileri Azure Depolama 'a göndermek için gereken bant genişliğini azaltmak için istemci tarafındaki verileri sıkıştırmayı göz önünde bulundurun. Verilerin sıkıştırılması bant genişliğini kaydedebilir ve ağ performansını iyileştireken performansı olumsuz etkileyebilir. İstemci tarafında veri sıkıştırma ve açma için ek işleme gereksinimlerinin performans etkisini değerlendirin. Sıkıştırılmış verilerin depolanması sorun gidermeyi daha zor hale getirir, çünkü verileri standart araçlar kullanarak görüntülemek daha zor olabilir.
  • Uygulamanız ölçeklenebilirlik hedeflerine yaklaşıyorsa, yeniden denemeler için bir üstel geri alma kullandığınızdan emin olun. Bu makalede açıklanan önerileri uygulayarak ölçeklenebilirlik hedeflerine ulaşmaktan kaçınmak en iyisidir. Ancak, yeniden denemeler için bir üstel geri alma kullanılması, uygulamanızın hızlı bir şekilde yeniden denenmesini engelleyecek ve bu da azaltmayı daha kötüleşmektedir. Daha fazla bilgi için Zaman Aşımı ve Sunucu Meşgul hataları başlıklı bölüme bakın.

Tek bir bloba eşzamanlı olarak erişen birden çok istemci

Tek bir bloba eşzamanlı olarak erişen çok sayıda istemciniz varsa, hem blob başına hem de depolama hesabı ölçeklenebilirlik hedeflerine göre göz önünde bulundurabilirsiniz. Tek bir bloba erişen istemcilerin tam sayısı, blobu aynı anda talep alan istemci sayısı, blob boyutu ve ağ koşulları gibi faktörlere bağlı olarak değişir.

Blob bir web sitesinden sunulan CDN videolar gibi bir depolama alanı üzerinden dağıtılabiliyorsa, bir CDN. Daha fazla bilgi için İçerik dağıtımı başlıklı bölüme bakın.

Verilerin gizli olduğu bilimsel simülasyonlar gibi diğer senaryolarda iki seçeneğiniz vardır. Birincisi, iş yüke erişimi bir süre boyunca bloba erişilsin ve aynı anda erişilsin. Alternatif olarak, blob başına ve depolama hesapları arasında toplam IOPS'i artırmak için blobu geçici olarak birden çok depolama hesabına kopyaabilirsiniz. Sonuçlar, uygulamanın davranışına bağlı olarak farklılık gösterir, bu nedenle tasarım sırasında eşzamanlılık desenlerini test etmek için emin olun.

Blob başına bant genişliği ve işlemler

Tek bir blob, saniye başına en fazla 500 isteği destekler. Aynı blobu okuması gereken birden çok istemci varsa ve bu sınırı aşmış durumdaysanız, blok blobu depolama hesabı kullanmayı göz önünde bulundurabilirsiniz. Blok blobu depolama hesabı daha yüksek bir istek oranı veya saniye başına I/O işlemleri (IOPS) sağlar.

Ayrıca blob üzerinde işlem dağıtmak için CDN gibi bir Azure CDN teslim ağı da kullanabilirsiniz. Daha fazla bilgi için Azure CDN bkz. Azure CDN genel bakış.

Bölümleme

Azure blob Depolama bölümlemenin performansı geliştirmek için nasıl yararlı olduğunu anlama. Azure Depolama, tek bir bölümdeki verileri birden çok bölüme yayılan verilerden daha hızlı bir şekilde sunar. Bloblarınızı uygun şekilde adlandırarak okuma isteklerinin verimliliğini geliştirin.

Blob depolama, ölçeklendirme ve yük dengeleme için aralık tabanlı bölümleme düzeni kullanır. Her blob, tam blob adını (hesap+kapsayıcı+blob) oluşan bir bölüm anahtarına sahip olur. Bölüm anahtarı, blob verilerini aralıklara bölmek için kullanılır. Daha sonra aralıklar Blob depolama genelinde yük dengeli olur.

Aralık tabanlı bölümleme, sözcük temelli sıralama (örneğin, mypayroll, myperformance, myemployees, vb.) veya zaman damgası (log20160101, log20160102, log20160102 vb.) kullanan adlandırma kurallarının, bölümlerin aynı bölüm sunucusunda birlikte yer alıyor olma olasılığı daha yüksek olduğu anlamına gelir. , artan yük için daha küçük aralıklara bölünmelerini gerektirene kadar. Blobları aynı bölüm sunucusunda birlikte bulmak performansı artırır, bu nedenle performans geliştirmenin önemli bir bölümü blobları en verimli şekilde düzenleyecek şekilde adlandırmayı içerir.

Örneğin, bir kapsayıcı içindeki tüm bloblar, bu blobların üzerindeki yük bölüm aralıklarının yeniden dengelemesi gerekene kadar tek bir sunucu tarafından hizmet kullanılabilir. Benzer şekilde, adları sözcük sırasına göre düzenlenmiş hafif yüklü bir hesap grubu, bu hesapların bir veya tüm üzerindeki yük birden çok bölüm sunucusuna bölünmesini gerektirene kadar tek bir sunucu tarafından hizmet kullanılabilir.

Her yük dengeleme işlemi, işlem sırasında depolama çağrılarının gecikme süresini etkiler. Hizmetin bir bölüme yönelik ani trafik yoğunluğuyla başa çıkabilme özelliği, yük dengeleme işlemi başlayarak bölüm anahtarı aralığını yeniden dengeleyene kadar tek bir bölüm sunucusunun ölçeklenebilirliğiyle sınırlıdır.

Bu tür işlemlerin sıklığını azaltmak için bazı en iyi yöntemleri takip edin.

  • Mümkünse, standart depolama hesapları için 4 MiB'den büyük blob veya blok boyutlarını ve premium depolama hesapları için 256 KiB'den büyük boyutları kullanın. Daha büyük blob veya blok boyutları, yüksek aktarım hızına sahip blok bloblarını otomatik olarak etkinleştirir. Yüksek aktarım hızına sahip blok blobları, bölüm adlandırmadan etkilenmez, yüksek performanslı veri aktarımı sağlar.

  • Hesaplar, kapsayıcılar, bloblar, tablolar ve kuyruklar için kullanılan adlandırma kuralını inceleme. İhtiyaçlarınızı en iyi şekilde değerlendiren bir karma işlevi kullanarak hesap, kapsayıcı veya blob adlarını üç basamaklı karma ile önek olarak kullanmayı göz önünde bulundurabilirsiniz.

  • Verilerinizi zaman damgası veya sayısal tanımlayıcılar kullanarak düzenliyorsanız, yalnızca ekleme (veya yalnızca uç) trafik deseni kullanmamanızı sağlar. Bu desenler aralık tabanlı bölümleme sistemine uygun değildir. Bu desenler tüm trafiğin tek bir bölüme doğru ilerlenmesine ve sistemin etkili bir şekilde yük dengelemeyle sınırlenmesine neden olabilir.

    Örneğin, yyyymmdd gibi bir zaman damgasına sahip bir blob kullanan günlük işlemleriniz varsa, bu günlük işlem için tüm trafik tek bir bloba yönlendirildi ve bu tek bir bölüm sunucusu tarafından sunulmaktadır. Blob başına sınırların ve bölüm başına sınırların ihtiyaçlarınıza uygun olup olmadığını göz önünde bulundurarak bu işlemi gerekirse birden çok bloba bölmeyi göz önünde bulundurarak. Benzer şekilde, zaman serisi verilerini tablolarınıza depolarsanız, tüm trafik anahtar ad alanının son parçasına yönlendir olabilir. Sayısal kimlikler kullanıyorsanız, kimlik ön ek olarak üç basamaklı karma girin. Zaman damgası kullanıyorsanız, zaman damgasının önüne saniye değeri (örneğin, ssyyyymmdd) ön ek olarak yazın. Uygulamanız listeleme ve sorgulama işlemlerini düzenli olarak gerçekleştiriyorsa, sorgu sayısını sınırlayıcı bir karma işlevi seçin. Bazı durumlarda rastgele ön ek yeterli olabilir.

  • Azure Depolama'da kullanılan bölümleme düzeni hakkında daha fazla bilgi için bkz. Azure Depolama: GüçlüTutarlılık ile Yüksek Oranda Kullanılabilir bulut Depolama Hizmeti.

Uygulamanın fiziksel ağ kısıtlamalarının performans üzerinde önemli bir etkisi olabilir. Aşağıdaki bölümlerde, kullanıcıların karşılaşabilirsiniz bazı sınırlamaları açıklanmaktadır.

İstemci ağ özelliği

Bant genişliği ve ağ bağlantısının kalitesi, aşağıdaki bölümlerde açıklandığı gibi uygulama performansında önemli roller oynar.

Aktarım hızı

Bant genişliği için sorun genellikle istemcinin özellikleridir. Daha büyük Azure örneklerinin kapasitesi daha yüksek olan CS'ler vardır, bu nedenle tek bir makineden daha yüksek ağ sınırlarına ihtiyacınız varsa daha büyük bir örnek veya daha fazla VM kullanmayı göz önünde bulundurabilirsiniz. Azure Depolama'a bir şirket içi uygulamasından erişıyorsanız, aynı kural geçerli olur: istemci cihazın ağ özelliklerini ve Azure Depolama konumuyla ağ bağlantısını anlama ve gerektiğinde bunları geliştirme veya uygulamanızı kendi özellikleri içinde çalışacak şekilde tasarlama.

Tüm ağ kullanımlarında olduğu gibi hatalara ve paket kaybına neden olan ağ koşullarının etkili aktarım hızını yavaşlatacaklarını unutmayın. WireShark veya NetMon kullanmak bu sorunu tanılamaya yardımcı olabilir.

Konum

Herhangi bir dağıtılmış ortamda, istemcinin sunucuya yakın yerleştirilmesi en iyi performansı sunar. Azure Depolama en düşük gecikme süresiyle erişmek için istemciniz için en iyi konum aynı Azure bölgesindedir. Örneğin, Azure Depolama kullanan bir Azure web uygulamanız varsa, her ikisini de Güneydoğu Asya veya ABD Batı gibi tek bir bölgede bulun. Kaynakları birlikte bulmak, tek bir bölge içindeki bant genişliği kullanımı ücretsiz olduğu için gecikme süresini ve maliyeti azaltır.

İstemci uygulamaları Azure Depolama'a erişecek ancak mobil cihaz uygulamaları veya şirket içi kurumsal hizmetler gibi Azure'da barındırılmasa, depolama hesabının bu istemcilere yakın bir bölgede konumlanması gecikme süresini düşürebilirsiniz. İstemcileriniz geniş kapsamlı olarak dağıtılıyorsa (örneğin, bazıları Kuzey Amerika'da ve bazıları Avrupa'da), bölge başına bir depolama hesabı kullanmayı göz önünde bulundurabilirsiniz. Uygulamanın depoları tek tek kullanıcılara özgü ise ve depolama hesapları arasında veri çoğaltması gerektirmeyen bu yaklaşımın uygulanması daha kolaydır.

Blob içeriğinin geniş kapsamlı dağıtımı için, blob gibi bir içerik teslim Azure CDN. Daha fazla bilgi için Azure CDN bkz. Azure CDN.

SAS ve CORS

Kullanıcının web tarayıcısında veya bir cep telefonu uygulamasında çalışan JavaScript gibi kodu Azure'daki verilere erişmek için yetkilendirmeniz Depolama. Yaklaşımlardan biri, ara sunucu olarak hareket ediyor bir hizmet uygulaması oluşturmaktır. Kullanıcının cihazı hizmette kimlik doğrulamasında olur ve bu da Azure Depolama erişim yetkisi verir. Bu şekilde, güvenli olmayan cihazlarda depolama hesabı anahtarlarınızı açığa çıkarabilirsiniz. Ancak, kullanıcının cihazı ile Azure depolama arasında aktarılan tüm verilerin hizmet uygulamasından geçmesi gerekeceği için bu yaklaşım hizmet Depolama önemli bir yük getirir.

Paylaşılan erişim imzaları (SAS) kullanarak Bir hizmet uygulamasını Azure Depolama ara sunucu olarak kullanmaktan kaçınabilirsiniz. SAS kullanarak, kullanıcı cihazınızın sınırlı bir erişim belirteci kullanarak doğrudan Azure Depolama istekleri yapmalarını sebilirsiniz. Örneğin, bir kullanıcı uygulamanıza fotoğraf yüklemek istiyorsa, hizmet uygulamanız bir SAS oluşturarak kullanıcının cihazına gönderebilir. SAS belirteci, belirli bir süre Depolama azure Depolama kaynağına yazma izni verir ve bu sürenin ardından SAS belirtecin süresi dolar. SAS hakkında daha fazla bilgi için bkz. Paylaşılan erişim imzaları (SAS) kullanarak Azure Depolama kaynaklara sınırlı erişim izni ver.

Genellikle bir web tarayıcısı, bir etki alanındaki web sitesi tarafından barındırılan bir sayfada JavaScript'in başka bir etki alanına yazma işlemleri gibi belirli işlemleri gerçekleştirmesine izin vermez. Aynı çıkış noktası ilkesi olarak bilinen bu ilke, bir sayfada yer alan kötü amaçlı bir betiğin başka bir web sayfasındaki verilere erişmesini önler. Ancak aynı çıkış noktası ilkesi, bulutta bir çözüm oluşturmak için bir sınırlama olabilir. Çıkış noktası arası kaynak paylaşımı (CORS), hedef etki alanının kaynak etki alanındaki isteklere güvenerek tarayıcıyla iletişim kurmasını sağlayan bir tarayıcı özelliğidir.

Örneğin, Azure'da çalışan bir web uygulamasının Azure Depolama hesabına kaynak isteğinde Depolama düşünün. Web uygulaması kaynak etki alanı, depolama hesabı ise hedef etki alanıdır. Azure Depolama hizmetlerinden herhangi biri için CORS'yi, kaynak etki alanındaki isteklerin Azure Depolama tarafından güvenilen web tarayıcısıyla iletişim kurarak yapılandırabilirsiniz. CORS hakkında daha fazla bilgi için bkz. Azure kaynakları için çıkış noktası arası kaynak paylaşımı (CORS) Depolama.

Hem SAS hem de CORS, web uygulamanıza gereksiz yük uygulamamanıza yardımcı olabilir.

Önbelleğe Alma

Önbelleğe Alma performansta önemli bir rol oynar. Aşağıdaki bölümlerde önbelleğe alma ile ilgili en iyi yöntemler ele lanmıştır.

Verileri okuma

Genel olarak, verileri bir kez okumak iki kez okumak tercih edilir. Bir kullanıcıya içerik olarak hizmet vermek için Azure Depolama 50 MiB blobu alan bir web uygulaması örneğini düşünün. İdeal olarak, uygulama blobu yerel olarak diske önbelleğe alabilir ve sonraki kullanıcı istekleri için önbelleğe alınmış sürümü alabilir.

Önbelleğe alınmış olduğu için değiştirilmemişse blobu almaktan kaçınmanın bir yolu, değişiklik zamanı için koşullu üst bilgi ile GET işlemi nitelendirmektir. Son değiştirme zamanı, blob önbelleğe alındıktan sonra ise blob alınır ve yeniden önbelleğe alınır. Aksi takdirde, en iyi performans için önbelleğe alınan blob alınır.

Ayrıca, uygulamanızı blobu aldıktan sonra kısa bir süre boyunca değişmeden kalacak şekilde tasarlamaya da karar veebilirsiniz. Bu durumda, uygulamanın bu aralıkta blob'un değiştirilip değiştirilmedi olmadığını denetlemesi gerekmektedir.

Yapılandırma verileri, arama verileri ve uygulama tarafından sık kullanılan diğer veriler, önbelleğe alma için iyi adaylardır.

Koşullu üst bilgileri kullanma hakkında daha fazla bilgi için bkz. Blob hizmeti işlemleri için koşullu üst bilgileri belirtme.

Verileri toplu olarak karşıya yükleme

Bazı senaryolarda, verileri yerel olarak toplanmış ve ardından her bir veri parçasını hemen karşıya yüklemek yerine düzenli aralıklarla toplu olarak karşıya yükleyebilirsiniz. Örneğin, bir web uygulamasının etkinliklerin günlük dosyasını tutar. Uygulama, her etkinliğin ayrıntılarını bir tabloya (birçok depolama işlemleri gerektiren) yükleyebilir veya etkinlik ayrıntılarını yerel bir günlük dosyasına kaydedebilir ve ardından tüm etkinlik ayrıntılarını belirli aralıklarla sınırlandırılmış bir dosya olarak bloba yükleyebilir. Her günlük girişinin boyutu 1 KB ise, tek bir işlemde binlerce girdiyi karşıya yükleyebilirsiniz. Tek bir işlem, boyutu 64 miB'ye kadar olan bir blobu karşıya yüklemeyi destekler. Uygulama geliştiricinin istemci cihazı veya karşıya yükleme hatası olasılığı için tasarlaması gerekir. Etkinlik verileri tek bir etkinlik yerine bir süre için indirildikten sonra Tablo depolama yerine Blob depolama kullanılması önerilir.

.NET yapılandırması

Bu bölümde .NET Framework önemli performans geliştirmeleri yapmak için kullanabileceğiniz birkaç hızlı yapılandırma ayarı liste almaktadır. Başka diller kullanıyorsanız, benzer kavramların seçtiğiniz dilde geçerli olup olamay olduğunu kontrol edin.

.NET Core kullanma

Performans geliştirmelerinden yararlanmak Depolama .NET Core 2.1 veya sonraki bir ile Azure Depolama uygulamalarınızı geliştirin. Mümkün olduğunda .NET Core 3.x kullanılması önerilir.

.NET Core'daki performans geliştirmeleri hakkında daha fazla bilgi için aşağıdaki blog gönderilerini okuyun:

Varsayılan bağlantı sınırını artırma

.NET'te, aşağıdaki kod varsayılan bağlantı sınırını (genellikle bir istemci ortamında iki veya sunucu ortamında ondur) 100'e artırır. Genellikle, değeri yaklaşık olarak uygulamanız tarafından kullanılan iş parçacığı sayısına ayarlayabilirsiniz. Herhangi bir bağlantı açılmadan önce bağlantı sınırını ayarlayın.

ServicePointManager.DefaultConnectionLimit = 100; //(Or More)  

Diğer programlama dilleri için, bağlantı sınırının nasıl ayarlana kadar belirlenecek belgelere bakın.

Daha fazla bilgi için Web Hizmetleri: Eşzamanlı Bağlantılar blog gönderisini okuyun.

En az iş parçacığı sayısını artırma

Zaman uyumlu çağrıları zaman uyumsuz görevlerle birlikte kullanıyorsanız, iş parçacığı havuzunda iş parçacığı sayısını artırmak istiyor olabilir:

ThreadPool.SetMinThreads(100,100); //(Determine the right number for your application)  

Daha fazla bilgi için bkz. ThreadPool.SetMinThreads yöntemi.

Sınırsız paralellik

Paralellik performans için harika olabilir, ancak sınırsız paralellik kullanma konusunda dikkatli olun, yani iş parçacığı veya paralel istek sayısına bir sınır uygulanmaz. Verileri karşıya yüklemek veya indirmek, aynı depolama hesabı içinde birden çok bölüme erişmek veya aynı bölümdeki birden çok öğeye erişmek için paralel istekleri sınırlayalın. Paralellik sınırsızsa, uygulamanız istemci cihazın özelliklerini veya depolama hesabının ölçeklenebilirlik hedeflerini aşarak daha uzun gecikme sürelerine ve azaltmaya neden olabilir.

İstemci kitaplıkları ve araçları

En iyi performans için her zaman Microsoft tarafından sağlanan en son istemci kitaplıklarını ve araçlarını kullanın. Azure Depolama istemci kitaplıkları çeşitli dillerde kullanılabilir. Azure Depolama, PowerShell ve Azure CLI'sini de destekler. Microsoft, performansla bu istemci kitaplıklarını ve araçlarını etkin bir şekilde geliştirir, en son hizmet sürümleriyle güncel tutar ve kanıtlanmış performans uygulamalarının çoğunu dahili olarak işlemelerini sağlar.

Hizmet hatalarını işleme

Azure Depolama, hizmet bir isteği işleyene bir hata döndürür. Belirli bir senaryoda Azure Depolama tarafından döndürülebilir hataları anlamak, performansı iyileştirmeye yardımcı olur.

Zaman Aşımı ve Sunucu Meşgul hataları

Azure Depolama, ölçeklenebilirlik sınırlarına yaklaştığında uygulamanızı kısıtlar. Bazı durumlarda Azure Depolama geçici bir koşuldan dolayı bir isteği işleyeyemebilir. Her iki durumda da hizmet bir 503 (Sunucu Meşgul) veya 500 (Zaman Aşımı) hatası döndürür. Hizmet, daha yüksek aktarım hızına izin vermek için veri bölümlerini yeniden artırıyorsa da bu hatalar oluşabilir. İstemci uygulaması genellikle bu hatalardan birini neden olan işlemi yeniden denemeli. Ancak Azure Depolama ölçeklenebilirlik hedeflerini aştıklarına göre uygulamanıza kısıtlama getiriyorsa veya hizmet başka bir nedenle isteği karşılayamasa bile agresif yeniden denemeler sorunu daha da kötü hale getirebilir. Üstel geri kapatma yeniden deneme ilkesi kullanılması önerilir ve istemci kitaplıkları varsayılan olarak bu davranışa göre hareket edilir. Örneğin, uygulamanız 2 saniye sonra, sonra 4 saniye, sonra 10 saniye, sonra 30 saniye sonra yeniden denenebilir ve ardından tamamen vazgeçmeye devamebilir. Bu şekilde, uygulamanız azaltmaya yol açacak davranışları daha da artırarak hizmet üzerindeki yükünü önemli ölçüde azaltır.

Bağlantı hataları azaltmanın sonucu değildir ve geçici olması beklendiği için hemen yeniden denenabilir.

Yeniden denenebilir olmayan hatalar

İstemci kitaplıkları yeniden denemeleri hangi hataların yeniden denenebilir ve hangilerinin yeniden denenene bir farkındalıkla ele almaktadır. Ancak, Azure Depolama REST API doğrudan çağırıyorsanız, yeniden denememeniz gereken bazı hatalar vardır. Örneğin, 400 (Hatalı İstek) hatası, istemci uygulamasının beklenen formda olduğundan işlenemedi bir istek gönderdiğini gösterir. Bu isteği yeniden almak her zaman aynı yanıtı verir, bu nedenle yeniden denemenin bir anlamı yoktur. Azure sanal atı doğrudan Depolama REST API olası hataları ve yeniden denenip denen bunların gerekip gerek olmadığını öğrenin.

Azure güvenlik kodu hakkında daha fazla Depolama için bkz. Durum ve hata kodları.

Blobları kopyalama ve taşıma

Azure Depolama, bir depolama hesabı içinde, depolama hesapları arasında ve şirket içi sistemler ile bulut arasında blobları kopyalamaya ve taşımaya yönelik bir dizi çözüm sağlar. Bu bölümde, performans üzerindeki etkileri açısından bu seçeneklerden bazıları açıkmektedir. Blob depolamaya veya Blob depolamadan verimli bir şekilde veri aktarma hakkında bilgi için bkz. Veri aktarımı için bir Azure çözümü seçme.

Blob kopyalama API'leri

Blobları depolama hesapları arasında kopyalamak için URL'den Blok Koy işlemi kullanın. Bu işlem verileri herhangi bir URL kaynağından zaman uyumlu olarak blok blobu içine kopyalar. bu Put Block from URL işlemi kullanmak, verileri farklı depolama hesaplarına iletirken gerekli bant genişliğini önemli ölçüde düşürebilirsiniz. Kopyalama işlemi hizmet tarafında olduğundan, verileri indirmeniz ve yeniden karşıya yüklemeniz gerek değildir.

Aynı depolama hesabı içindeki verileri kopyalamak için Blobu Kopyala işlemi kullanın. Aynı depolama hesabı içindeki verileri kopyalama genellikle hızlı bir şekilde tamamlanır.

AzCopy’yi kullanma

AzCopy komut satırı yardımcı programı, blobların depolama hesapları arasında toplu olarak aktarımı için basit ve verimli bir seçenektir. AzCopy bu senaryo için iyileştirilmiştir ve yüksek aktarım hızları elde edilebilir. AzCopy sürüm 10, Put Block From URL blob verilerini depolama hesapları arasında kopyalamak için işlemi kullanır. Daha fazla bilgi için bkz. AzCopy v10 kullanarak Depolama Azure depolamaya kopyalama veya taşıma.

Use Azure Data Box

Büyük hacimli verileri Blob depolamaya içeri aktararak çevrimdışı aktarımlar için Azure Data Box kullanmayı göz önünde bulundurabilirsiniz. Microsoft tarafından sağlanan Data Box cihazları, zaman, ağ kullanılabilirliği veya maliyetlerle sınırlıyken büyük miktarlardaki verileri Azure'a taşımaya yönelik iyi bir seçenektir. Daha fazla bilgi için bkz. Azure DataBox Belgeleri.

İçerik dağıtımı

Bazen bir uygulamanın aynı içeriği birden çok kullanıcıya (örneğin, bir web sitesinin giriş sayfasında kullanılan bir ürün tanıtım videosu) aynı veya birden çok bölgede yer alan bir hizmette olması gerekir. Bu senaryoda blob içeriğini coğrafi Content Delivery Network CDN gibi bir Azure CDN (Azure CDN) kullanın. Tek bir bölgede Depolama olan ve diğer bölgelere düşük gecikme süresiyle içerik teslim ede Azure CDN azure hesaplarından farklı olarak, dünyanın her yanında birden çok veri merkezi sunucularını kullanır. Ayrıca, bir CDN genellikle tek bir depolama hesabından çok daha yüksek çıkış sınırlarını destekleyene bir hizmettir.

Daha fazla bilgi için Azure CDN bkz. Azure CDN.

Meta verileri kullanma

Blob hizmeti, blob özelliklerini veya meta verilerini içeren HEAD isteklerini destekler. Örneğin, uygulamanıza bir fotoğraftan Exif (değiştirilebilir görüntü biçimi) verileri gerekiyorsa, fotoğrafı alabilir ve ayıklar. Bant genişliği tasarrufu yapmak ve performansı artırmak için, uygulama fotoğrafı karşıya yüklerken uygulama Exif verilerini blob'un meta verilerinde depolar. Daha sonra yalnızca head isteği kullanarak meta verilerde Exif verilerini alın. Blob'un tam içeriğini değil yalnızca meta verileri almak önemli miktarda bant genişliği tasarrufu sağlar ve Exif verilerini ayıklamak için gereken işlem süresini azaltır. Blob başına 8 KiB meta veri depolanabli olduğunu unutmayın.

Upload hızlı bir şekilde

Blobları hızlı bir şekilde karşıya yüklemek için öncelikle bir blob mu yoksa çok blob mu yükleycaz? Senaryoya bağlı olarak doğru yöntemi belirlemek için aşağıdaki kılavuzu kullanın.

Upload büyük bir blobu hızla

Tek bir büyük blobu hızlı bir şekilde karşıya yüklemek için istemci uygulaması bloklarını veya sayfalarını paralel olarak karşıya yükleyebilir ve tek tek blobların ve depolama hesabının tamamının ölçeklenebilirlik hedeflerine dikkat edin. Azure Depolama kitaplıkları paralel olarak karşıya yükleme desteği sunar. Örneğin, .NET veya Java'da izin verilen eş zamanlı istek sayısını belirtmek için aşağıdaki özellikleri kullanabilirsiniz. Desteklenen diğer dillere yönelik istemci kitaplıkları benzer seçenekler sağlar.

birçok blob Upload hızla

Birçok blobu hızlıca karşıya yüklemek için Blobları paralel olarak karşıya yükleyin. Paralel olarak karşıya yüklemek, her seferinde paralel blok yüklemesine sahip tek Blobları karşıya yüklemeden daha hızlıdır. bu nedenle, yükleme işlemini depolama hizmetinin birden çok bölümü arasında yayar. AzCopy, yüklemeler için varsayılan olarak paralel olarak çalışır ve bu senaryo için önerilir. Daha fazla bilgi için bkz. AzCopy ile çalışmaya başlama.

Doğru blob türünü seçin

Azure Depolama blok bloblarını, ekleme bloblarını ve sayfa bloblarını destekler. Belirli bir kullanım senaryosunda, blob türü seçiminiz çözümünüzün performansını ve ölçeklenebilirliğini etkileyecektir.

Blok Blobları, büyük miktarlarda verileri verimli bir şekilde yüklemek istediğinizde uygundur. Örneğin, blob depolamaya fotoğraf veya video yükleyen bir istemci uygulaması blok bloblarını hedefleyebilir.

Ekleme Blobları bloklardan oluşan blok bloblarına benzerdir. Bir ekleme blobu değiştirdiğinizde, bloklar yalnızca Blobun sonuna eklenir. Ekleme Blobları, bir uygulamanın mevcut bir bloba veri eklemesi gerektiğinde günlüğe kaydetme gibi senaryolar için yararlıdır.

Sayfa Blobları, uygulamanın verilerde rastgele yazma işlemleri yapması gerekiyorsa uygundur. Örneğin, Azure sanal makine diskleri sayfa Blobları olarak depolanır. Daha fazla bilgi için bkz. blok bloblarını, ekleme bloblarını ve sayfa Bloblarını anlama.

Sonraki adımlar