Dağıtılmış bir uygulama için performans ayarı yapma

Bu dizide, performans sorunlarını tanılamak için bir geliştirme ekibinin yük testlerini ve ölçümleri nasıl kullandığını göstermek amacıyla çeşitli bulut uygulaması senaryolarını ele alacağız. Bu makaleler, örnek uygulamaları geliştirirken gerçekleştirdiğimiz gerçek yük testlerini temel alır. Her senaryonun koduna GitHub’dan erişilebilir.

Senaryolar:

Performans nedir?

Performans, genellikle verimlilik, yanıt süresi ve kullanılabilirlik bakımından ölçülür. İş işlemlerinde performans hedefleri temel alınmalıdır. Müşteriye dönük görevler, rapor oluşturma gibi işletimsel görevlere kıyasla daha sıkı gereksinimlere sahip olabilir.

Her iş yüküne yönelik performans hedeflerini tanımlayan bir hizmet düzeyi hedefi (SLO) tanımlayın. Bu hedefe genellikle bir performans hedefini aşağıdakiler gibi bir dizi Temel Performans Göstergesine (KPI) bölerek ulaşırsınız:

  • Belirli isteklerin gecikme süresi veya yanıt süresi
  • Saniye başına gerçekleştirilen istek sayısı
  • Sistemin özel durumları üretme hızıdır.

Performans hedefleri açıkça bir hedef yük içermelidir. Ayrıca, sisteme aynı anda erişirken ve aynı işi yaparken bile tüm kullanıcılar tam olarak aynı performans düzeyini almaz. Bu nedenle, SLO’nun çerçevesi yüzdebirlik bakımından oluşturulmalıdır.

Için örnek bir SLO şöyle olabilir: "İstemci isteklerinin 25 K istek/saniyeye kadar olan yüklerde 500 ms @ P90 içinde bir yanıtı vardır."

Dağıtılmış bir sistemde performans ayarı yaparken karşılaşılan zorluklar

Dağıtılmış bir uygulamadaki performans sorunlarını tanılamak oldukça zor olabilir. Bu zorlukların bazıları şunlardır:

  • Genellikle sistemin birden fazla bileşenini içeren tek bir iş işlemi veya işlem. Tek bir işlemin bütünsel uçtan uca görünümünü almak zor olabilir.

  • Kaynak tüketimi birden çok düğüme dağıtılır. Tutarlı bir görünüm elde etmek için günlükleri ve ölçümleri tek bir yerde toplamanız gerekir.

  • Bulut, esnek bir ölçek sunar. Otomatik ölçeklendirme, yükte gerçekleşen ani artışları işlemek için önemli bir teknik olsa da, temelde yatan sorunların üzerini örtebilir. Hangi bileşenlerin ne zaman ölçeklendirileceğini bilmek de zor olabilir.

  • İş yükleri genellikle çekirdekler veya iş parçacıkları arasında ölçeklendirilemez. İş yüklerinizin gereksinimlerini anlamak ve daha iyileştirilmiş boyutları incelemek önemlidir. Bazı boyutlar, tek çekirdek odaklı ve çekirdek başına lisanslı iş yüklerini geliştirmek için kısıtlanmış çekirdekler ve devre dışı bırakılmış hiper iş parçacığı kullanımı sunar.

  • Basamaklı başarısızlıklar, kök sorunun yukarı akışında başarısızlıklara neden olabilir. Sonuç olarak, sorunun ilk sinyali, kök nedenden farklı bir bileşende ortaya çıkabilir.

Genel en iyi uygulamalar

Performans ayarı hem sanat hem de bilimdir. Ancak, sistematik bir yaklaşım benimsenerek, bilimsel yönü daha öne çıkarılabilir. Aşağıda bazı en iyi uygulamalar verilmiştir:

  • Ölçüm toplamak için telemetriyi etkinleştirin. Kodunuzu işaretleyin. İzlemeye yönelik en iyi yöntemleri izleyin. Bir işlemdeki tüm adımları görebilmek için bağıntılı izlemeyi kullanın.

  • Yalnızca ortalamayı değil 90/95/99 yüzdebirlikleri izleyin. Ortalama, aykırı değerleri maskeleyebilir. Ölçümlere yönelik örnekleme oranı da önemlidir. Çok düşük örnekleme hızı, sorunlara işaret edebilen ani artışları veya aykırı değerleri gizleyebilir.

  • Her darboğazı ayrı ayrı ele alın. Bir varsayım oluşturup değişkenleri birer birer değiştirerek bunu test edin. Bir darboğazın ortadan kaldırılmasıyla yukarı veya aşağı akışta farklı bir darboğaz ortaya çıkabilir.

  • Hataların ve yeniden denemelerin performans üzerinde büyük etkileri olabilir. Arka uç hizmetlerinin sisteminizi daralttığını görürseniz ölçeği genişletin veya kullanımı iyileştirmeyi deneyin (örneğin, veritabanı sorgularını ayarlayarak).

  • Ortak performans anti-desenlerine bakın.

  • Paralel hale getirilecek fırsatlar arayın. İleti sorguları ve veritabanları, darboğazların yaygın sebeplerindendir. Her iki durumda da parçalama işlemi yardımcı olabilir. Daha fazla bilgi için bkz. Yatay, dikey ve işlevsel veri bölümleme. Dengesiz okuma veya yazma yüklerini belirten sık erişimli bölümlemelere bakın.

Sonraki adımlar

Performans ayarlama senaryolarını okuyun