Kodu ve altyapıyı iyileştirmeye yönelik öneriler

Bu Azure Well-Architected Framework Performans Verimliliği denetim listesi önerisi için geçerlidir:

PE:07 Kodu ve altyapıyı iyileştirme. Yüksek performanslı kod kullanın ve sorumlulukları platforma boşalttığından emin olun. Kod ve altyapıyı yalnızca temel amaçları için ve yalnızca gerektiğinde kullanın.

Bu kılavuzda kod ve altyapı performansını iyileştirmeye yönelik öneriler açıklanmaktadır. Kodunuzu ve altyapınızı iyileştirmek için bileşenlerinizi yalnızca temel amaçları ve yalnızca gerektiğinde kullanmanız gerekir. Kodu ve altyapıyı aşırı kullandığınızda gereksiz kaynak tüketimi, performans sorunları ve yavaş yanıtlar oluşturur. Bu verimliliksizlikleri telafi etmek için, aynı görevleri yerine getirmek için daha fazla kaynak eklemeniz gerekir.

Tanımlar

Süre Tanım
Eşzamanlılık Aynı anda birden çok görev veya işlem gerçekleştirildiğinde ancak tam olarak aynı anda gerçekleştirilmesi gerekmediğinde.
CPU mimarisi Bilgisayarın nasıl çalıştığını etkileyen bileşenler ve ilkeler.
Veri sıkıştırma Yedekli verileri en aza indirerek dosyaların boyutunu küçültme eylemi.
Yığın Bellekte çalışma zamanı bellek ayırmaları için kullanılan bir alan.
Bellek sızıntısı Bir iş yükü, bellek artık gerekli olmadığında ayrılan belleği serbest bırakamazsınız.
Parallelism Aynı anda birden çok görev veya işlem gerçekleştirildiğinde.

Temel tasarım stratejileri

Kodun ve altyapının iyileştirilmesi, performans verimliliğini artırmak için kodun ve destekleyici altyapının ince ayarlanmasını gerektirir. Görevleri hızlı bir şekilde yürüten ve kaynakları boşa harcamayan performanslı kod gerektirir. Gereksiz karmaşıklığı önlemek için kolaylaştırılmış iyi tasarlanmış bir altyapı gerektirir. bir iş yükü, platformun doğal özelliklerini kullanmalıdır. Hem kodun hem de altyapının temel amaçları ve yalnızca gerektiğinde kullanılmasını sağlamaya yardımcı olan bir yaklaşımdır.

Kod performansını iyileştirme

Kod performansını iyileştirmek için kaynak kullanımını azaltmak, çalışma zamanını en aza indirmek ve performansı geliştirmek için kodu değiştirin. Bir yazılım programının verimliliğini ve hızını artırmak için kodu değiştirebilirsiniz. Deneme yanılma ile ilgili performans sorunlarını maskelemayın. Deneme yanılma, kaynak yerine ek kapasite ekleme gibi kod performansını telafi etmek için işlem kaynakları eklemek anlamına gelir. İyileştirme ile ilgili performans sorunlarını düzeltmeniz gerekir. Kod performansını iyileştirdiğinizde, sistem kaynaklarının kullanımını en üst düzeye çıkarmanıza, yanıt süresini iyileştirmenize, gecikme süresini azaltmanıza ve kullanıcı deneyimini iyileştirmenize yardımcı olur.

Kodunuzu izleme

kod izleme, çalışma zamanı sırasında veri toplayan ve kod performansını izleyen koda kod parçacıkları veya kitaplıklar ekleme uygulamasını ifade eder. Kod izleme, geliştiricilerin kaynak tüketimi (CPU, bellek kullanımı) ve yürütme süresi gibi önemli ölçümler hakkında bilgi toplamasına olanak tanır. Geliştiriciler, kodu izleyerek kod sık erişimli yollarla ilgili içgörüler elde edebilir, performans sorunlarını belirleyebilir ve daha iyi performans verimliliği için kodu iyileştirebilir.

İdeal bir ortamda, kod analizini yazılım geliştirme yaşam döngüsünün başlarında yapmanız gerekir. Bir kod sorununu ne kadar erken yakalarsanız, düzeltmek o kadar ucuz olur. Bu kod analizinin mümkün olduğunca çoğunu otomatikleştirmek istiyorsunuz. El ile yapılan eforu azaltmak için dinamik ve statik kod analizi araçlarını kullanın. Ancak, bu testin hala bir üretim simülasyonu olduğunu unutmayın. Üretim, kod iyileştirmeyi en net şekilde anlamanızı sağlar.

Dengeleme: Kod izleme araçlarının maliyetleri artırma olasılığı yüksektir.

Sık erişimli yolları belirleme

Kodunuzu izleyerek farklı kod yolları için kaynak tüketimini ölçebilirsiniz. Bu ölçümler sık erişimli yolları belirlemenize yardımcı olur. Sık erişimli yolların performans ve kaynak kullanımı üzerinde önemli bir etkisi vardır. Bunlar, bir programın yüksek performans ve düşük gecikme süresi gerektiren kritik veya sık yürütülen bölümleridir. Kod sık erişimli yollarını belirlemek için şu adımları göz önünde bulundurun:

  • Çalışma zamanı verilerini analiz etme: Cpu, bellek veya G/Ç işlemleri gibi önemli kaynakları kullanan kod alanlarını belirlemek için çalışma zamanı verilerini toplayın ve analiz edin. Sık yürütülen veya tamamlanması uzun süren kod desenlerini veya bölümlerini arayın.

  • Performansı ölçme: Farklı kod yollarının yürütme süresini ve kaynak tüketimini ölçmek için profil oluşturma araçlarını veya performans testi çerçevelerini kullanın. Performans sorunlarını ve iyileştirme alanlarını belirlemeye yardımcı olur.

  • İş mantığını ve kullanıcı etkisini göz önünde bulundurun: Farklı kod yollarının, uygulamanın işlevselliği veya kritik iş işlemleriyle ilgisine göre önemini değerlendirin. Kullanıcılara değer sağlamak veya performans gereksinimlerini karşılamak için hangi kod yollarının kritik öneme sahip olduğunu belirleyin.

Kod mantığını iyileştirme

Kod mantığını iyileştirmek, daha az kaynakla görev gerçekleştirmek için kodun yapısını ve tasarımını iyileştirmektir. Geliştirilmiş mantık gereksiz işlemleri azaltır. Daha az kaynak tüketimiyle daha hızlı yürütme oluşturur. Kod yolu içinde performansı etkileyebilecek gereksiz işlemleri kaldırmanız gerekir. En yüksek performans verimliliği artışlarını görmek için sık erişimli yolları iyileştirmeye öncelik verme. Kod mantığını iyileştirmek için aşağıdaki stratejileri göz önünde bulundurun:

  • Gereksiz işlev çağrılarını kaldırma: Kodunuzu gözden geçirin ve istenen işlevsellik için gerekli olmayan ve performansı olumsuz etkileyebilecek işlevleri belirleyin. Örneğin, bir işlev çağrısı kodun daha önce tamamlandığı bir doğrulama gerçekleştirirse, gereksiz doğrulama işlev çağrısını kaldırabilirsiniz.

  • Günlüğe kaydetme işlemlerini en aza indirme: Günlüğe kaydetme hata ayıklama ve çözümleme için yararlı olabilir, ancak aşırı günlük kaydı performansı etkileyebilir. Her günlüğe kaydetme işleminin gerekliliğini değerlendirin ve performans analizi için kritik olmayan gereksiz günlük çağrılarını kaldırın.

  • Döngüleri ve koşulluları iyileştirme: Kodunuzdaki döngüleri ve koşulluları analiz edin ve ortadan kaldırılabilir gereksiz yinelemeleri veya koşulları belirleyin. Bu yapıları basitleştirmek ve iyileştirmek kodunuzun performansını artırabilir. Döngüler içindeki işlev çağrılarını en aza indirin ve gereksiz hesaplamaları ortadan kaldırın. Hesaplamaları döngünün dışına taşımayı veya döngü kaydını kaldırmayı kullanmayı göz önünde bulundurun.

  • Gereksiz veri işlemeyi azaltma: Gereksiz hesaplamalar veya dönüştürmeler gibi gereksiz veri işleme işlemleri için kodunuzu gözden geçirin. Kodunuzun verimliliğini artırmak için bu gereksiz işlemleri ortadan kaldırın.

  • Veri yapılarını iyileştirme. Verileri verimli bir şekilde depolamak ve almak için diziler, bağlantılı listeler, ağaçlar ve karma tablolar gibi uygun veri yapılarını seçin. Belirli bir sorun için en iyi veri yapısını seçin. Uygun bir veri yapısı, uygulama performansını artırır.

  • Ağ isteklerini en aza indirme: Kodunuz ağ istekleri yapmayı içeriyorsa, istek sayısını en aza indirin ve kullanımlarını iyileştirin. Mümkün olduğunda toplu istekler ve performansı artırmak için gereksiz gidiş dönüşlerden kaçının.

  • Ayırmaları en aza indirin: Aşırı bellek ayırmanın gerçekleştiği alanları belirleyin. Gereksiz ayırmaları azaltarak ve mümkün olduğunda mevcut kaynakları yeniden kullanarak kodu iyileştirin. Ayırmaları en aza indirerek bellek verimliliğini ve genel performansı geliştirebilirsiniz. Programlama diliniz için uygun bellek yönetimi ve çöp toplama stratejilerini kullanın.

  • Veri yapısı boyutunu küçültme: Sınıflar gibi veri yapılarınızın boyutunu değerlendirin ve azaltmanın mümkün olduğu alanları belirleyin. Veri gereksinimlerini gözden geçirin ve gereksiz alanları veya özellikleri ortadan kaldırın. Uygun veri türlerini seçerek ve verileri verimli bir şekilde toplayarak bellek kullanımını iyileştirin.

  • Performans açısından iyileştirilmiş SDK'ları ve kitaplıkları kullanın. Yerel SDK'ları veya performans için iyileştirilmiş kitaplıkları kullanın. Yerel SDK'lar, bir platformdaki veya bir çerçevedeki hizmetler ve kaynaklarla etkileşime geçmek için tasarlanmıştır. Örneğin, buluta özel SDK'lar bulut hizmeti veri düzlemleriyle özel API erişiminden daha iyi çalışır. SDK'lar, ağ isteklerini işleme ve etkileşimleri iyileştirme konusunda mükemmeldir. Math.NET gibi performans için iyileştirilmiş kitaplıklar performans için iyileştirilmiş işlevler içerir. İşlevleri uygun şekilde uyguladığınızda, iş yükünüzün performansını geliştirebilirsiniz.

  • Çapraz kesme uygulaması: Ara yazılım veya belirteç denetimleri gibi çapraz kesme uygulamalarının etkilerini göz önünde bulundurun ve bunların performansı olumsuz etkileyip etkilemediğini değerlendirin.

Çalıştığınız programlama diline özgü performans önerilerini gözden geçirin. İyileştirme alanlarını belirlemek için kodunuzu bu önerilere göre değerlendirin.

Dezavantajlar:

  • Kodun ve sık erişimli yolların iyileştirilmesi, geliştiricinin kod verimsizliklerini belirleme konusunda uzman olmasını gerektirir ve diğer görevler için gerekli olan yüksek beceriye sahip birey olabilir.
  • SDK'lar kolaylık sağlar ve API'lerle etkileşim kurmanın karmaşıklıklarını ortadan kaldırır. Ancak SDK'lar özel kod için denetim ve özelleştirme seçeneklerinizi sınırlayabilir.

Bellek yönetimini iyileştirme

Bellek yönetiminin iyileştirilmesi, bir iş yükünün verimliliği artırmak için bellek kaynaklarını kullanma, ayırma ve serbest bırakma biçimini iyileştirmeyi içerir. Uygun bellek yönetimi, bellek işlemlerinin yükünü azalttığı için kod performansını geliştirir. Verimli bellek kullanımı gecikme süresini azaltır, sistem yavaşlamalarını veya kilitlenmelerini önler ve hesaplama görevlerinin aktarım hızını en üst düzeye çıkarır. Bellek yönetimini iyileştirmek için aşağıdaki stratejileri göz önünde bulundurun.

Bellek sorunlarının hatalarını ayıklama. Bellek dökümleri, uygulama bellek anlık görüntüleridir. Bir uygulamanın bellek durumunu belirli bir zaman noktasında yakalar. Bellek dökümleri, bellekle ilgili sorunların geçmişe dönük analizini sağlar. Tanılamaya çalıştığınız sorunun doğasına ve kullanılabilir kaynaklara göre uygun bellek dökümü türünü seçin. Karmaşık, kritik sorunlar için rutin hata ayıklama ve tam dökümler için minyatür dökümler kullanmanız gerekir. Bu strateji, kaynak kullanımı ve tanılama özellikleri arasında bir denge sağlar. Birçok kod barındırma hizmeti bellekte hata ayıklamayı destekler. Bellek analizini destekleyen hizmetleri, desteklemeyen hizmetler yerine tercih etmelisiniz. Bellek sorunlarının hatalarını ayıklamanın temel adımları şunlardır:

  1. Bellek dökümlerini yakalama: Uygulamanızın çalışma zamanı sırasında bellek dökümlerini yakalamak için bir mekanizma ayarlayarak başlayın. Yakalama el ile, otomatik olarak veya belirli koşullar (aşırı bellek tüketimi gibi) karşılandığında tetiklenebilir. Bazı bulut hizmetleri bu işlemi zaten sunabilir.

  2. Bellek dökümlerini analiz etme: Bellek dökümlerini topladıktan sonra analiz edin. Windows uygulamaları için WinDbg veya Unix tabanlı sistemler için GDB gibi çok sayıda araç bu dökümleri incelemenize yardımcı olabilir.

  3. Bellek sızıntılarını tanımlama: Analiz sırasında bellek sızıntılarını belirlemeye odaklanın. Uygulamanız bellek ayırdığında bellek sızıntıları ortaya çıkar, ancak bellek artık gerekli olmadığında serbest bırakılamaz. Serbest bırakılmaları gerektiğinde bile bellekte kalan nesneleri veya veri yapılarını arayın.

  4. Düzeltme ve test: Sorunlu kodu belirledikten sonra bellek sorunlarını çözmeye odaklanın. Çözümler belleği doğru şekilde serbest bırakmayı, veri yapılarını iyileştirmeyi veya bellek yönetimi uygulamalarını yeniden değerlendirmeyi içerebilir. Çözümlerinizin etkili olduğundan emin olmak için sıkı testlerden geçtiğini onaylayın.

  5. Yineleme ve izleme: Bellek yönetimi sürekli bir işlemdir. Uygulamanızın bellek kullanımını düzenli olarak izleyin ve üretimde bellek dökümlerini toplamaya devam edin. Bellek sorunlarının sonraki kod değişiklikleriyle yeniden ortaya çıkmasın emin olmak için analiz ve iyileştirme aşamalarını düzenli olarak yeniden ziyaret edin.

Bellek dökümü analizini yazılım geliştirme yaşam döngünüze ekleyerek, uygulamalarınızın güvenilirliğini ve verimliliğini artırabilirsiniz. Üretimde bellekle ilgili sorunların olasılığını azaltmaya yardımcı olur.

Bellek ayırmalarını azaltın. Kodun genel bellek ayak izini azaltmak için bellek ayırmalarını en aza indirin. İş yükünüz kullanılabilir belleği verimli bir şekilde kullanabilir. Atık toplayıcının kullanılmayan belleği geri kazanmasına daha az ihtiyaç vardır ve çöp toplama döngülerinin sıklığını ve süresini azaltır. Özellikle sık sık gerçekleştiriyorsanız bellek ayırmaları maliyetli olabilir. Kodun hızlı ve verimli bir şekilde çalışabilmesi için bellek ayırmalarını en aza indirin.

Önbellekler sık erişilen verileri işlemcinin yakınında depolar ve bu da performansı artırır. Bellek ayırmalarını en aza indirdiğinizde önbellek alanı için daha az çekişme olur, böylece önbelleği etkili bir şekilde kullanabilirsiniz. Çok sayıda bellek ayırması uygulama performansını düşürebilir ve hatalar oluşturabilir. Bellek ayırmalarını en aza indirmenin diğer yolları şunlardır:

  • Yerel değişkenler: Bellek tüketimini en aza indirmek için genel değişkenler yerine yerel değişkenleri kullanın.

  • Gecikmeli başlatma: Nesnelerin veya kaynakların oluşturulmasını ihtiyaç duyulana kadar ertelemek için yavaş başlatma uygulayın.

  • Arabellekler: Büyük bellek arabelleklerinin ayırmasını önlemek için arabellekleri etkili bir şekilde yönetin.

  • Nesne havuzu: Büyük nesneleri ayırma ve serbest bırakma yerine yeniden kullanmak için nesne havuzu oluşturmayı göz önünde bulundurun.

Daha fazla bilgi için bkz . Bellek ayırmalarını azaltma ve Windows sistemlerindeki büyük nesne yığını.

Eşzamanlılık ve paralellik kullanma

Eşzamanlılık ve paralellik kullanımı, bilgi işlem kaynaklarını verimli bir şekilde kullanmak için birden çok görev veya işlemin aynı anda veya çakışan bir şekilde yürütülmesini içerir. Bu teknikler, bir iş yükünün işleyebileceği genel aktarım hızını ve görev sayısını artırır. Görevleri eşzamanlı veya paralel olarak çalıştırdığınızda, uygulamanın çalışma zamanını azaltır, gecikme süresini azaltır ve yanıt sürelerini artırır. Eşzamanlılık ve paralellik, CPU çekirdekleri veya dağıtılmış sistemler gibi bilgi işlem kaynaklarının verimli bir şekilde kullanımını sağlar. Eşzamanlılık ve paralellik, iş yükünü bilgi işlem kaynakları arasında etkili bir şekilde dağıtır.

Paralellik kullanın. Paralellik, bir sistemin birden çok bilgi işlem kaynağında birden çok görevi veya işlemi aynı anda tetikleyebilmesidir. Paralellik, bir iş yükünü paralel olarak çalıştırılacak daha küçük görevlere böler. Çok işlemcili veya dağıtılmış bilgi işlem gibi teknikleri kullanarak paralellik elde edebilirsiniz. İş yükü yönetimini iyileştirmek için görevleri çok çekirdekli işlemciler arasında dağıtma. CPU mimarisinden, iş parçacığı modellerinden ve çok çekirdekli işlemcilerden yararlanmak için kodu iyileştirin. Kodu paralel olarak çalıştırdığınızda, iş yükü birden çok çekirdek arasında dağıtıldığından performans artar.

Eşzamanlılık kullanın. Eşzamanlılık, bir sistemin birden çok görev veya işlem çalıştırabilmesidir. Eşzamanlılık, programın farklı bölümlerinin bağımsız olarak ilerlemesini sağlar ve bu da genel performansı artırabilir. Birden çok iş parçacığının tek bir işlem içinde eşzamanlı olarak çalıştığı çoklu iş parçacığı kullanımı gibi teknikleri kullanarak eşzamanlılık uygulayabilirsiniz. Görevlerin eşzamanlı olarak tetiklendiği zaman uyumsuz programlamayı da kullanabilirsiniz.

  • Zaman uyumsuz programlama: Zaman uyumsuz programlama, ana iş parçacığını engellemeden görevleri tetikleme yaklaşımıdır. Zaman uyumsuz programlama, bir programın uzun süre çalışan işlemlerin bitmeyi beklerken görevleri tetiklesine olanak tanır. Zaman uyumsuz programlama ile program birden çok görev başlatabilir ve bunların zaman uyumsuz olarak tamamlanmasını bekleyebilir. Programın bir sonrakine geçmeden önce her görevin bitmesini beklemesi gerekmez.

    Programlama diline ve platformuna bağlı olarak birçok zaman uyumsuz programlama tekniği ve deseni vardır. Yaygın yaklaşımlardan biri, C# gibi dillerde ve gibi async zaman uyumsuz anahtar sözcükler ve awaityapılar kullanmaktır. Bu anahtar sözcüklerle zaman uyumsuz yöntemler tanımlayabilirsiniz. HTTP trafiği için Zaman Uyumsuz Request-Reply desenini kullanmayı göz önünde bulundurun.

    Birçok çerçeve ve kitaplık, zaman uyumsuz programlama için yerleşik destek sağlar. Örneğin, .NET platformunda , Görev Tabanlı Zaman Uyumsuz desen ve Olay Tabanlı Zaman Uyumsuz desen gibi desenleri kullanarak zaman uyumsuz işlemler uygulayabilirsiniz. Zaman uyumsuz programlamanın belirli bir uygulaması, uygulamanın programlama diline, platformuna ve gereksinimlerine bağlı olarak değişir.

  • Kuyruklar: Kuyruk, istekte bulunan bir bileşen (üretici) ile iş yükünün işleme bileşeni (tüketici) arasında bulunan bir depolama arabelleğidir. Tek bir kuyruk için birden çok tüketici olabilir. Görevler arttıkça tüketicileri talebi karşılayacak şekilde ölçeklendirmeniz gerekir. Üretici görevleri kuyruğa yerleştirir. Kuyruk, bir tüketici kapasiteye sahip olana kadar görevleri depolar. Kuyruk genellikle talebin en yoğun olduğu bir işleme hizmetine iş devretmenin en iyi yoludur. Daha fazla bilgi için bkz. Kuyruk Tabanlı Yük Dengeleme düzeni ve Depolama kuyrukları ve Service Bus kuyrukları.

Bağlantı havuzunu kullanma

Bağlantı havuzu, her istek için yeni bir bağlantı oluşturmak yerine yerleşik veritabanı bağlantıları yeniden kullanım uygulamasıdır. Bir veritabanıyla bağlantı kurmak pahalı olabilir. Uzak veritabanı sunucusuna kimliği doğrulanmış bir ağ bağlantısı oluşturmanız gerekir. Veritabanı bağlantıları, sık sık yeni bağlantılar açan uygulamalar için özellikle pahalıdır. Bağlantı havuzu mevcut bağlantıları yeniden kullanır ve her istek için yeni bir bağlantı açma masrafını ortadan kaldırır. Bağlantı havuzu, bağlantı gecikme süresini azaltır ve sunucuda yüksek veritabanı aktarım hızına (saniye başına işlem sayısı) olanak tanır. Şu anda sahip olduğunuzdan daha fazla bağlantı işleyebilen bir havuz boyutu seçmelisiniz. Amaç, bağlantı havuzunun yeni gelen istekleri hızla işlemesini sağlamaktır.

Bağlantı havuzu sınırlarını anlama. Bazı hizmetler ağ bağlantısı sayısını sınırlar. Bu sınırı aştığınızda bağlantılar yavaşlayabilir veya sonlandırabilir. Başlangıç zamanında sabit bir bağlantı kümesi oluşturmak ve ardından bu bağlantıları korumak için bağlantı havuzunu kullanabilirsiniz. Çoğu durumda, varsayılan havuz boyutu yalnızca temel test senaryolarında hızlı performans gösteren birkaç bağlantıdan oluşabilir. Uygulamanız ölçek altında varsayılan havuz boyutunu tüketebilir ve bir performans sorunu oluşturabilir. Her uygulama örneğinde desteklenen eşzamanlı işlem sayısına eşleyen bir havuz boyutu oluşturmanız gerekir.

Bağlantı havuzunu test edin. Her veritabanı ve uygulama platformlarının havuz ayarlama ve kullanma gereksinimleri biraz farklıdır. Yük altında verimli çalıştığından emin olmak için bağlantı havuzunuzu test edin.

Risk: Bağlantı havuzu , havuz parçalanması oluşturabilir ve performansı düşürebilir.

Arka plan işlerini iyileştirme

Birçok uygulama, kullanıcı arabiriminden bağımsız olarak çalışan arka plan görevleri gerektirir. Uygulama işi başlatabilir ve kullanıcılardan gelen etkileşimli istekleri işlemeye devam edebilir. Arka plan işlerine örnek olarak toplu işler, yoğun işlemci kullanan görevler ve iş akışları gibi uzun süre çalışan işlemler verilebilir. Arka plan görevleri uygulamayı engellememeli veya sistem yük altındayken gecikmeli işlem nedeniyle tutarsızlıklara neden olmamalıdır. Performansı geliştirmek için arka plan görevlerini barındıran işlem örneklerini ölçeklendirebilirsiniz. Daha fazla bilgi için bkz . Arka plan işleri ve Ölçeklendirme ve performans konuları.

Altyapı performansını iyileştirme

Altyapı performansını iyileştirmek, en yüksek çalışma ve bir iş yükü için kaynakların en iyi şekilde kullanılmasını sağlamak için altyapı öğelerini geliştirmek ve ayarlamak anlamına gelir. Altyapıda ince ayarlamalar yaparak atıkları en aza indirebilir, gecikmeleri azaltabilir ve kullanılabilir kaynaklarla daha fazlasını elde edebilirsiniz. İş yüklerinin güvenilir ve hızlı bir şekilde çalışmasını sağlar, böylece kullanıcı deneyimleri ve maliyet tasarrufu iyileştirilir. Altyapı performansını iyileştirmek için aşağıdaki stratejileri göz önünde bulundurun:

Kullanım sınırları ekleyin. Bazı iş yükü bileşenlerinde kullanım sınırları uygulayabilirsiniz. Örneğin, kararsız podları kaldırmak için Azure Kubernetes Service (AKS) içinde pod CPU ve bellek sınırları tanımlayabilirsiniz. Performansı iyileştirmek için Java sanal makinelerinde (VM) bellek sınırları tanımlayabilirsiniz.

Altyapıyı kolaylaştırın. Etkileşim, bağımlılık ve uyumluluk sorunları olasılığını azaltmak için iş yükünüzü basitleştirin. İş yükünüzü basitleştirdiğinizde bellek, işlem gücü ve depolama kaynak kullanımını iyileştirirsiniz.

Yükü azaltın. bir iş yükü üzerindeki yükü azaltmak için, bir uygulamaya yönelik talebi en aza indirin ve kaynakların birincil görevlerini gerçekleştirmesini sağlayın. Örneğin, kodunuz içinde veya tek tek işlem örneklerinde güvenlik çözümleri çalıştırmaktan kaçınmak yaygın bir uygulamadır. Bunun yerine, web sunucuları HTTP isteklerine hizmet vermelidir. Web uygulaması güvenlik duvarları ve ağ geçidi kaynakları güvenlik denetimlerini işleyebilir. Aşağıdaki stratejiler iş yükünüzün yükünü azaltmaya yardımcı olur:

  • Nihai tutarlılık: Verilerin biraz tarihlenmesine izin vererek performansı artırmak için nihai tutarlılık modelini benimseyin. Nihai tutarlılık, sabit veri güncelleştirmeleri için CPU döngülerine ve ağ bant genişliğine yönelik acil talebi azaltır.

  • Temsilci görevleri: Sunucu görevlerini istemcilere veya ara sunuculara (arama dizinleri ve önbellekler gibi) temsilci olarak verin. Verileri sıralama, verileri filtreleme veya görünümleri işleme gibi görevlere temsilci seçme. Bu görevleri boşalttığınızda, sunucularınızdaki iş yükünü azaltır ve performansı geliştirirsiniz.

Ağı iyileştirin. Bir iş yükü ağını performans için en iyi duruma getirmek için ağ altyapısını yapılandırın ve hassas ayarlamalar yapın. İş yükünün en yüksek verimlilik düzeyinde çalıştığından emin olun.

  • Ağ protokolleri: Birden çok isteğin tek bir bağlantı üzerinden gönderilmesini sağlayan HTTP/2 gibi modern protokollere yükseltin. Modern protokoller, yeni bağlantılar kurma yükünü azaltır.

    Ödün: Modern protokoller eski istemcileri dışlayabilir.

  • Ağ sohbeti: İstek sayısını azaltmak için toplu ağ istekleri. Birden çok küçük istek yapmak yerine, ağ yükünü azaltmak için bunları daha büyük istekler halinde birleştirin.

  • Veritabanı sorguları: Veritabanı sorgularının yalnızca gerekli bilgileri aldığından emin olun. Ağ trafiğinin artmasına ve performansın yavaşlamasına neden olabilecek büyük miktarda gereksiz veri almaktan kaçının.

  • Statik veriler: Kullanıcılara yakın olan sık erişilen statik içeriği önbelleğe almak için bir içerik teslim ağı kullanın. Verileri önbelleğe aldığınızda, uzun mesafeler üzerinden seyahat etmek zorunda değildir. Önbelleğe alma, yanıt sürelerini iyileştirir ve ağ trafiğini azaltır.

  • Günlük toplama: Yalnızca gereksinimlerinizi desteklemek için gereken günlük verilerini toplayın ve tutun. Log Analytics maliyetlerinizi iyileştirmek için veri toplama kurallarını yapılandırın ve tasarımla ilgili dikkat edilmesi gerekenleri uygulayın.

  • Veri sıkıştırma: İstemciler ve sunucular arasında hızlı iletim sağlamak için HTTP içeriğini ve dosya verilerini sıkıştırıp paketleyin. Sıkıştırma, bir sayfanın veya API'nin döndürdüğü verileri küçültür ve tarayıcıya veya istemci uygulamasına geri gönderir. Sıkıştırma, ağ trafiğini iyileştirir ve bu da uygulama iletişimlerini hızlandırabilir.

    Dezavantaj: Sıkıştırma, sunucu tarafı ve istemci tarafı işleme ekler. Uygulamanın verileri sıkıştırması, göndermesi ve sıkıştırmasını açması gerekir. Çok noktaya yayın iletişimi veya birden çok alıcıyla iletişim, sıkıştırma ek yükü oluşturabilir. İş yükünüz için uygun olup olmadığını belirlemek için veri sıkıştırma uygulamadan önce ve sonra performans çeşitlemelerini test etmeniz ve ölçmeniz gerekir. Daha fazla bilgi için bkz. ASP.NET Core yanıt sıkıştırma.

Azure kolaylaştırma

İzleme kodu: Azure İzleyici Application Insights, otomatik izleme (otomatik yetkisiz erişim) ve uygulama kodunun el ile izlenmesini destekler. Otomatik yetkisiz erişim, uygulamanın koduna dokunmadan telemetri toplamayı etkinleştirir. El ile izleme, Application Insights veya OpenTelemetry API'sini uygulamak için kod değişiklikleri gerektirir. Application Insights Profiler'ı sık erişimli yolları iyileştirmeye yardımcı olmak için kullanabilirsiniz.

Kod mantığını iyileştirme: Azure, Azure hizmetleriyle etkileşime geçmek için çeşitli programlama dilleri için SDK'lar ve kitaplıklar sunar. Uygulamalar ve Azure kaynakları arasındaki etkileşimleri basitleştirmek için SDK'ları kullanın. SDK'lar Azure hizmetleriyle en iyi etkileşimi sağlayarak gecikme süresini azaltır ve verimliliği artırır.

Bellek yönetimini iyileştirme: Bellek tüketimini analiz etmek ve bellek sızıntılarını tanımlamaya ve gidermeye yardımcı olmak için Application Insights'ın akıllı algılama özelliğini kullanın.

Azure App Service bir profil oluşturucu ve bellek dökümü toplama ve analiz özelliğine sahiptir. otomatik App Service özelliği, .NET ve Java uygulamalarının bellek dökümlerini ve profil izlemelerini otomatik olarak alabilir.

Eşzamanlılık ve paralellik kullanma: Azure Cosmos DB, Azure İşlevleri ve Blob depolama gibi farklı Azure hizmetleri eşzamanlılık için benzersiz destek sağlar. Paralellik için AKS hizmetleri, paralel işlemeyi geliştiren kapsayıcılı uygulamalar dağıtmayı destekler.

Azure Batch, altyapı kurulumuna gerek kalmadan paralel ve yüksek performanslı bilgi işlemi etkinleştirmek için kullanabileceğiniz bulut tabanlı bir iş zamanlama hizmetidir. Daha fazla bilgi için bkz . Arka plan işleri.

Altyapı performansını iyileştirme: Kod kullanarak altyapıyı tanımlamak ve dağıtmak için Azure Resource Manager şablonları uygulayın. Verimli, yinelenebilir ve tutarlı kaynak dağıtımları uygulamak için bu şablonları kullanın. Azure İlkesi, kaynak dağıtımlarının kurumsal en iyi yöntemlere ve standartlara uygun olmasını sağlamak için idare özellikleri sağlar.

Zaman uyumsuz programlama için, zaman uyumsuz programlamayı kolaylaştırmak için Azure Kuyruk Depolama ve Azure Service Bus gibi ölçeklenebilir kuyruğa alma hizmetlerini kullanın. Görevleri kuyruğa alabilir ve bağımsız olarak işleyebilirsiniz. Zaman uyumsuz işlemleri desteklemek için Azure Market, Azure hizmetleriyle tümleştirebileceğiniz üçüncü taraf kuyruklar ve araçlar sunar.

Performans Verimliliği denetim listesi

Önerilerin tamamına bakın.