Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:OSS performance best practices

Son Güncelleme:Oct 01, 2026

Alibaba Cloud OSS'in dağıtık mimarisinden yararlanarak OSS veri işleme hızını artırın, gecikme süresini azaltın ve uygulama yanıtlarını hızlandırın.

Sıralı önekleri rastgele öneklere değiştirin

OSS, yüksek eşzamanlılık gerektiren istekleri desteklemek amacıyla nesne anahtarlarının UTF-8 sırasına göre verileri bölmelere ayırır. Sıralı önekler (zaman damgaları veya sözlük sırasına göre dizilmiş dizeler), dosyaları birkaç bölmede yoğunlaştırarak bu bölmeleri aşırı yükler. Yükü eşit şekilde dağıtmak için bunun yerine rastgele önekler kullanın.

İstek oranınız saniyede 2.000 isteği aştığında aşağıdaki sorunlar ortaya çıkabilir. Her indirme, yükleme, silme, kopyalama veya meta veri alma işlemi tek bir işlem olarak sayılır. N adet dosyanın toplu silinmesi veya listelenmesi N işlem olarak kabul edilir.

  • Etkin bölge oluşumu: Yüksek frekanslı istekler belirli bölmelerde yoğunlaşarak bunların G/Ç kapasitesini tüketir veya otomatik kısıtlamayı tetikler.

  • İstek oranı kısıtlanır: Etkin bölmeler sürekli veri yeniden dengelemeyi tetikler; bu da istek işleme süresini artırır.

    Not

    Yeniden dengeleme, sabit parçalama kurallarına değil, gerçek zamanlı sistem durumuna ve işleme kapasitesi analizine dayanır. Sıralı öneklere sahip dosyalar, yeniden dengelemeden sonra bile etkin bir bölgede kalabilir.

Bu sorunları çözmek için sıralı öneki rastgele bir önekle değiştirin. Bu işlem, nesne dizinini ve G/Ç yükünü bölmeler arasında eşit şekilde dağıtır.

  • Nesne anahtarına onaltılık bir hash öneki ekleyin

    Nesne anahtarlarını oluşturmak için tarihleri ve müşteri kimliklerini kullanıyorsanız, bunlar sıralı bir zaman damgası öneki içerir:

    sample-bucket-01/2024-07-19/customer-1/file1
    sample-bucket-01/2024-07-19/customer-2/file2
    sample-bucket-01/2024-07-19/customer-3/file3
    ...
    sample-bucket-01/2024-07-20/customer-2/file4
    sample-bucket-01/2024-07-20/customer-5/file5
    sample-bucket-01/2024-07-20/customer-7/file6
    ...

    Müşteri kimliğinin bir hash değerini (MD5 gibi) hesaplayın ve birkaç karakterini nesne anahtarı öneki olarak kullanın. 4 karakterlik bir hash öneki ile anahtarlar şu şekilde görünür:

    sample-bucket-01/9b11/2024-07-19/customer-1/file1
    sample-bucket-01/9fc2/2024-07-19/customer-2/file2
    sample-bucket-01/d1b3/2024-07-19/customer-3/file3
    ...
    sample-bucket-01/9fc2/2024-07-20/customer-2/file4
    sample-bucket-01/f1ed/2024-07-20/customer-5/file5
    sample-bucket-01/0ddc/2024-07-20/customer-7/file6
    ...

    4 karakterlik onaltılık bir hash, 164 (65.536) olası kombinasyon sağlayarak 65.536 adede kadar bölme kullanılmasına olanak tanır. İstek oranınıza ve bölme başına saniyede 2.000 işlem sınırına göre bunun yeterli olup olmadığını belirleyin.

    Nesneleri tarihe göre listelemek için (örneğin, sample-bucket-01 içindeki 2024-07-19 tarihli tüm nesneler) ListObject API'sini kullanarak pakette bucket'taki tüm nesneleri listeleyin, ardından istenen tarihle eşleşen sonuçları birleştirin.

  • Nesne anahtarını ters çevirin

    Milisaniye hassasiyetinde bir UNIX zaman damgasının nesne anahtarı olarak kullanılması da sıralı bir önektir:

    sample-bucket-02/1513160001245.log
    sample-bucket-02/1513160001722.log
    sample-bucket-02/1513160001836.log
    sample-bucket-02/1513160001956.log
    ...
    sample-bucket-02/1513160002153.log
    sample-bucket-02/1513160002556.log
    sample-bucket-02/1513160002859.log
    ...

    Sıralı düzenlemeyi önlemek için zaman damgasını ters çevirin. Ters çevrilmiş sonuç:

    sample-bucket-02/5421000613151.log
    sample-bucket-02/2271000613151.log
    sample-bucket-02/6381000613151.log
    sample-bucket-02/6591000613151.log
    ...
    sample-bucket-02/3512000613151.log
    sample-bucket-02/6552000613151.log
    sample-bucket-02/9582000613151.log
    ...

    İlk üç basamak milisaniyeyi (1.000 olası değer) temsil eder, dördüncü basamak her saniye değişir ve beşinci basamak her 10 saniyede bir değişir. Ters çevirme işlemi, önek rastgeleliğini büyük ölçüde artırarak yükü eşit şekilde dağıtır ve darboğazları önler.

Çok sayıda küçük dosya için yapılan istekleri azaltın

Çok sayıda küçük dosya yüklerken bunları ZIP, TAR veya Parquet dosyası halinde paketleyerek birden fazla isteği tek bir istekte birleştirin. Örneğin, her biri 1 KB boyutunda 100 dosyayı tek bir ZIP dosyasında paketlemek, 100 PUT isteğini 1'e indirir.

Çok sayıda nesneyi listelemek için **ListObjects yerine Bucket Inventory** kullanarak nesne listesini CSV veya Parquet formatında oluşturun. Daha fazla bilgi için bkz. Bucket inventory.

Byte aralığı getirmeyi kullanın

OSS'den büyük dosyalar (100 MB üzeri) indirirken kararsız bir ağ bağlantısı aktarımı kesintiye uğratabilir. Bir dosyanın belirli bölümlerini almak için HTTP Range isteği kullanın:

Get /ObjectName HTTP/1.1
Host:examplebucket.oss-cn-hangzhou.aliyuncs.com
Date:Fri, 19 Jul 2024 17:27:45 GMT
Authorization:SignatureValue
Range:bytes=[$ByteRange]

Range üstbilgisi, 0 ile content-length - 1 arasındaki bir byte aralığını belirtir. HTTP Range isteklerini kullanarak OSS kaynaklarını segmentler halinde alma.

OSS Transfer Acceleration özelliğini kullanın

Transfer Acceleration, gigabayt veya terabayt ölçeğindeki dosyalar ya da Çin anakarası ile diğer bölgeler arasındaki bölge düzeyindeki istekler için uzun mesafeli veri aktarımlarını hızlandırır. Akıllı yönlendirme aracılığıyla istekleri en yakın erişim noktasına yönlendirerek uçtan uca hızlandırma sağlar. Transfer Acceleration kullanarak OSS'e erişme.

Sık erişilen içeriği önbelleğe alın

Alibaba Cloud CDN, statik içeriği dünya genelindeki varış noktalarında (POP'lar) önbelleğe alır. Kullanıcılar içeriği en yakın POP'tan alarak erişim hızını artırır ve kaynak yükünü azaltır.

Bir POP'ta istenen dosya eksikse veya süresi dolmuşsa CDN, dosyayı kaynak OSS paketinden alır ve önbelleğe kaydeder. Kaynak içeriği değiştiğinde CDN, POP önbelleklerini otomatik olarak günceller.

Bu yaklaşım, küresel bir kullanıcı tabanına sahip işletmeler için özellikle faydalıdır. CDN kullanarak OSS erişimini hızlandırma.

En son OSS SDK sürümünü kullanın

En son Alibaba Cloud OSS SDK, yerleşik performans optimizasyonları içerir:

  • Yeni özellikler: En son API'leri, optimize edilmiş algoritmaları ve daha verimli kodlayıcıları içerir.

  • Hata işleme ve yeniden denemeler: Yaygın hataları (HTTP 503 gibi) otomatik olarak işleyerek hataları azaltır ve başarı oranlarını artırır.

  • Aktarım yönetimi: Bağlantıları otomatik olarak ölçeklendirir ve yüksek aktarım hızına ulaşmak için aralık isteklerini kullanır.

  • Çok iş parçacıklı destek: Veri işleme hızını artırmak için birden fazla isteği paralel olarak işler.

  • Optimize edilmiş bellek yönetimi: Gereksiz bellek ek yükünü azaltır ve kullanım verimliliğini artırır.

  • Geliştirilmiş uyumluluk: Eski sorunları giderir ve üçüncü taraf kitaplıklar ile işletim sistemleriyle uyumluluğu iyileştirir.

En son SDK'yı SDK overview adresinden indirin.

OSS ve ECS'i aynı bölgede kullanın

Veri aktarım gecikme süresini azaltmak ve okuma hızlarını artırmak için ECS örneklerini ve OSS paketlerini aynı bölgede dağıtın. Aynı bölgedeki iletişim dahili uç noktaları kullanır ve trafik ücretine tabi değildir; bu sayede bant genişliği maliyeti olmadan büyük ölçekli veri aktarımları gerçekleştirilebilir. Bir ECS örneğinden dahili ağ üzerinden OSS kaynaklarına erişme.

Gecikmeye duyarlı uygulamalar için zaman aşımı yeniden denemelerini uygulayın

OSS, yönetim API'leri (GetService, PutBucket, GetBucketLifecycle vb.) için QPS sınırlaması uygular. Yüksek istek oranları HTTP 503 yavaşlama yanıtını tetikleyebilir. Bu durumda birkaç saniye bekleyip yeniden deneyin.

Tek bir Alibaba Cloud hesabı için toplam QPS sınırı 10.000'dir. Daha yüksek bir sınır talep etmek için Technical Support ile iletişime geçin. Bu eşiğin altında bile, istekler tek bir bölmede yoğunlaşır ve kapasitesini aşarsa sunucu kısıtlama uygulayarak 503 hataları döndürebilir. İstek öneklerinizi rastgele hale getirirseniz (bkz. OSS performansı ve genişletilebilirliği en iyi uygulamaları), OSS daha yüksek QPS'yi desteklemek için bölmeleri otomatik olarak ölçeklendirir. Tek yapmanız gereken beklemek ve yeniden denemektir.

Büyük istekler (128 MB üzeri) için aktarım hızını ölçün ve en yavaş %5'lik kısmı yeniden deneyin. Tipik gecikme süresi onlarca milisaniye olan küçük istekler (512 KB altı) için GET veya PUT işlemlerini 2 saniye sonra yeniden deneyin. Sonraki yeniden denemeler için üstel geri çekilme stratejisi kullanın (örneğin, önce 2 saniye, ardından 4 saniye).

Tutarlı yanıt sürelerine sahip sabit boyutlu istekler için en yavaş %1'lik kısmı belirleyin ve yeniden deneyin. Tek bir yeniden deneme genellikle gecikme süresini etkili bir şekilde azaltır.

Yatay ölçeklendirme ve paralel isteklerle yüksek aktarım hızına ulaşın

OSS, büyük ölçekli dağıtık bir sistemdir. Yükü birden fazla ağ yoluna dağıtmak için paralel istekleri yatay olarak ölçeklendirin.

Verileri birden fazla iş parçacığı veya örnek arasında paralel olarak yükleyin ve indirin. Optimal ölçeklendirme stratejisi, uygulamanıza ve nesne yapınıza bağlıdır.

Bant genişliğini ve kaynak kullanımını ölçmek için tek bir istekle başlayın, ardından maksimum eşzamanlı istek sayısını belirleyin. Örneğin, bir istek CPU'nun %10'unu kullanıyorsa en fazla 10 eşzamanlı isteği destekleyebilirsiniz.

Depolama bağlantılarını yatay olarak ölçeklendirin

OSS'i tek bir uç nokta yerine dağıtık bir sistem olarak ele alın. Mevcut bant genişliğini en üst düzeye çıkarmak için farklı bağlantılar üzerinden birden fazla eşzamanlı istek gönderin. OSS, bir pakete yönelik bağlantı sayısını sınırlamaz.

Çok sayıda küçük dosyadan oluşan büyük partileri yüklemek için ossutil aracını -j 100~500 eşzamanlılık parametresiyle kullanın ve kısıtlamayı yönetmek için OSS SDK'nın üstel geri çekilme yeniden deneme stratejisiyle birleştirin.

Yeniden deneme sayısını artırın

Bir istek yavaşsa yeniden deneme gönderin. Uygulamanızın hata toleransı gereksinimlerine göre OSS SDK'da zaman aşımı ve yeniden deneme değerlerini yapılandırın.