Aracılığıyla paylaş


Kodu ve altyapıyı iyileştirmeye yönelik mimari stratejileri

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ı kodu kullanın ve sorumlulukları platforma devreddiğinden 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 verimsizlikleri telafi etmek için, aynı görevleri yerine getirmek için daha fazla kaynak eklemeniz gerekir.

Tanımlar

Süre Definition
Concurrency 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 çalışma şeklini etkileyen bileşenler ve ilkeler.
Veri sıkıştırma Yedekli verileri en aza indirerek dosyaların boyutunu küçültme eylemi.
Yığın Çalışma zamanı bellek ayırmaları için kullanılan bellek 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.
Paralellik Aynı anda birden çok görev veya işlem gerçekleştirildiğinde.

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ı doğrultusunda 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 eklemek gibi kod performansını telafi etmek için işlem kaynakları eklemek anlamına gelir. İyileştirmeyle 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

İzleme kodu, çalışma zamanı sırasında veri toplayan ve kod performansını izleyen koda kod parçacıkları veya kitaplıklar ekleme alıştırması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, yazılım geliştirme yaşam döngüsünün erken aşamalarında kod analizi 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 çözümleme 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, yüksek performans ve düşük gecikme süresi gerektiren bir programın 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. İyileştirme için performans sorunlarını ve alanları tanımlamaya yardımcı olur.

  • İş mantığını ve kullanıcı etkisini göz önünde bulundurun: Farklı kod yollarının, uygulamanın işlevselliğine veya kritik iş işlemlerine olan ilgisine göre önemini değerlendirin. Kullanıcılara değer sunmak 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 kazanç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çinde 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ğ isteklerinde bulunmayı 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 indirme: 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 paketleyerek bellek kullanımını iyileştirin.

  • Performans için 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şlemede ve etkileşimleri iyileştirmede üstünlük sağlar. 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.

Tavizler:

  • Kodu ve sık erişimli yolları iyileştirmek, kod verimsizliklerini tanımlama konusunda geliştirici uzmanlığı 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önetimini iyileştirme, 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ı artırır. 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 belleği anlık görüntüleridir. Bir uygulamanın belirli bir zamanda bellek durumunu 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 niteliğine 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ı ile tanılama özellikleri arasında bir denge sağlar. Birçok kod barındırma hizmeti bellek hata ayıklamasını destekler. Bellek analizini destekleyen hizmetleri, desteklemeyen hizmetler yerine tercih etmelisiniz. Bellek sorunları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 bunları analiz edin. Windows uygulamaları için WinDbg veya Unix tabanlı sistemler için GDB gibi birçok araç bu dökümleri incelemenize yardımcı olabilir.

  3. Bellek sızıntılarını belirleme: 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ılması 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 üretimdeki bellek dökümlerini toplamaya devam edin. Bellek sorunlarının sonraki kod değişiklikleriyle yeniden ortaya olmadığından 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. Çöp 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 de 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 oluşturma: 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 sistemlerinde büyük nesne yığını.

Eşzamanlılık ve paralellik kullanma

Eşzamanlılık ve paralellik kullanmak, bilgi işlem kaynaklarını verimli bir şekilde kullanmak için birden çok görevi veya işlemi aynı anda veya çakışan bir şekilde yürütmeyi 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 ve 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 ç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, bir programın farklı bölümlerinin bağımsız olarak ilerlemesini sağlar ve bu da genel performansı geliştirebilir. 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 tamamlanması beklenirken 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 sonraki göreve 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 platformundaTask-Based Zaman Uyumsuz desen veEvent-Based Zaman Uyumsuz desen gibi desenleri kullanarak zaman uyumsuz işlemler uygulayabilirsiniz. Zaman uyumsuz programlamanın belirli bir şekilde uygulanması, 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 .Queue-Based 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 kurulan veritabanı bağlantılarını 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ı (saniye başına işlemler) sağlar. Ş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ı havuzu oluşturmayı kullanabilirsiniz. Çoğu durumda, varsayılan havuz boyutu yalnızca temel test senaryolarında hızlı bir şekilde performans gösteren birkaç bağlantıdan oluşabilir. Uygulamanız, ölçek kapsamındaki 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 oluşturma , 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 , Ö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 ayarlama yaparak atıkları en aza indirip 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'te (AKS) 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 uygulanan 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 eskimiş olmasını sağlayarak 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üleri ve ağ bant genişliği üzerindeki 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 iyileştirmek 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.

    Denge: 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 bunları daha büyük istekler halinde birleştirerek ağ yükünü azaltın.

  • Veritabanı sorguları: Veritabanı sorgularının yalnızca gerekli bilgileri aldığından emin olun. Büyük miktarda gereksiz veri almaktan kaçının, bu da ağ trafiğinin artmasına ve performansın yavaşlanmasına neden olabilir.

  • 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 boyunca seyahat etmek zorunda değildir. Önbelleğe alma, yanıt sürelerini artırır 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, uygulama iletişimlerini hızlandırabilen ağ trafiğini iyileştirir.

    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 uyguladıktan sonra performans varyasyonlarını test etmeniz ve ölçmeniz gerekir. Daha fazla bilgi için bkz. ASP.NET Core'da yanıt sıkıştırma.

Azure hizmetlerinin kolaylaştırılması

İ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 koleksiyonunu etkinleştirir. El ile izleme, Application Insights veya OpenTelemetry API'sini uygulamak için kod değişiklikleri gerektirir. Sık erişimli yolları iyileştirmeye yardımcı olması için Application Insights Profiler'ı 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: Application Insights'ın akıllı algılama özelliğini kullanarak bellek tüketimini analiz edin ve bellek sızıntılarını tanımlamaya ve gidermeye yardımcı olun.

Azure App Service'in profil oluşturucu ve bellek dökümü toplama ve analiz özelliği vardır. App Service otomatik sağlık ö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ı 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

Öneriler kümesinin tamamına bakın.