Bu rehberler, yüksek trafikli .NET sistemleri üzerindeki günlük işimden çıktı: bir API'nin sınavın zirvesinde ayakta kalması, veritabanının yük altında yavaşlamaması ve bir mesajın ne kaybolması ne de iki kez uygulanması gereken sistemler. Her rehber somut bir problemi teşhisten çözüme kadar izliyor; kod örnekleri de araçların güncel sürümlerine göre yazıldı.
Rehberler
- Yüksek trafikli API'ler için SQL Server performans iyileştirme Query Store ile pahalı sorguları bulmak, yürütme planlarını okumak, kapsayan indeksler, parameter sniffing, kilitler ve RCSI, EF Core tuzakları ve SqlBulkCopy ile toplu yazma.
- Locust ile API yük testi Gerçekçi bir senaryo yazmak, headless ve dağıtık çalıştırmak, RPS'i ve yüzdelikleri okumak ve darboğazı sunucu tarafında bulmak.
- ASP.NET Core'da önbellekleme IMemoryCache, Redis, iki seviyeli HybridCache ve output caching: her biri ne işe yarar, anahtarlar ve TTL'ler nasıl seçilir ve neler önbelleğe alınmamalıdır.
- .NET'te RabbitMQ Publisher confirm'ler, manuel ack ve prefetch, idempotent consumer'lar, gecikmeli yeniden denemeler, bir parking kuyruğu ve outbox deseni.
Bu rehberler nereden geliyor?
Gozine2'de, sınav zirvelerinde 45.000 ile 70.000 arası eşzamanlı kullanıcısı olan bir sistem üzerinde çalıştım. Her zirveden önce darboğazları bulmak için en yoğun API'leri Locust ile yük altına sokuyor, SQL Server sorgularını ve önbellekleme yollarını iyileştiriyor ve Redis'i Sentinel ile yüksek erişilebilir tutuyorduk. Projenin tüm hikâyesi, yoğun trafik altındaki sınav sistemi üzerine vaka çalışmasında anlatılıyor.
Her projenin arka planıyla birlikte daha uzun anlatımlar Backend Notları serisinde. Sınav zirvelerinde Redis Sentinel'i ele alan 1. bölümle başlayın; diğer bölümler Notlar bölümünde listeleniyor.
Nereden başlamalı?
Sisteminiz zirvede yavaşlıyor ve nedenini bilmiyorsanız yük testiyle başlayın: ölçüm olmadan her optimizasyon bir tahmindir. Ölçümler yanıt süresinin veritabanında harcandığını gösteriyorsa SQL Server rehberine geçin. Bir önbelleği ya da mesaj kuyruğunu, hangi problemi çözdüğünü bildiğinizde ekleyin.
Belirli bir sistem için yardıma ihtiyacınız varsa Benimle çalışın sayfası neler yapabileceğimi anlatıyor.
Mahdi Molavi