🖥️ BT operasyonları — site güvenilirliği Canlı model
Bir web servisi için nöbetçisiniz: bir filo örneğin önünde yük dengeleyici, bir veritabanının önünde önbellek ve %99,9 erişilebilirlik hedefi. Model her dakika kuyruk gecikmesini, zaman aşımlarını, önbellek isabetlerini ve veritabanı yükünü ders kitabı formüllerinden hesaplar — ve kararlarınızın maliyetini.
Neler öğreneceksiniz
Gecikme tam kullanıma yakın neden patlar (Erlang C) ve açılış gecikmeli otomatik ölçekleme neden hep geç kalır.
SLO'lar, hata bütçeleri ve tüketim hızı uyarıları ne zaman geri alınacağına nasıl karar verir.
Soğuk bir önbellek nasıl veritabanı kesintisine dönüşür ve hangi kollar zaman kazandırır: trafik atma, hizmeti kısma, ısıtma.
Simülatör
Zaman 0 dk
▶Hizmet veren örnek
⚙Örnek açılıyor
!Hatalı derlemedeki örnek
·Boş yuva
•Gelen istekler
Kontroller
Filo için taban. Artırmak örnekleri hemen başlatır — yine de hizmet vermeden önce açılış gecikmesini beklerler.
Kullanım oranında hedef izleme; örnekler hâlâ açılırken yeni ölçek artışı yok. Kapalı = tam olarak asgari.
Düşük = daha fazla pay ve daha fazla maliyet. Ölçülen kullanım %100'ü aşamaz; bu yüzden doymuş bir filo yalnızca adım adım büyür.
Daha uzun TTL = daha çok isabet, ama yanıtlar daha eski olabilir (ortalama yaş ≈ TTL/2).
6 dakika boyunca sık kullanılan anahtarları yükler (dakikada önbelleğin +%12'si), saniyede 600 ek veritabanı sorgusu pahasına.
Düşük öncelikli %30'luk payın (önceden getirme, toplu iş, tarayıcılar) yük dengeleyicide “sonra tekrar deneyin” ile reddedilen kısmı.
Ağır özellik istek başına 20 ms CPU ve bir veritabanı sorgusu ekler. Kapalı = kontrollü hizmet düşüşü.
Son sağlam derlemeyi yeni bir sunucu filosuna yeniden dağıtır (5 dk, iki kez faturalanır), sonra trafiği geçirir. Tekrar basmak hazırlığı baştan başlatır; canlıda kötü bir derleme yoksa yalnızca para kaybettirir.
Göstergeler
Hata oranı
0,00%
normal
p99 gecikme
342ms
normal
Kalan hata bütçesi (30 gün)
50,0%
normal
Filo kullanımı
52%
normal
Tüketim hızı (1 sa)
0,0 ×
İstekler
1125 req/s
Hizmet veren örnekler
10
Açılan örnekler
0
Önbellek isabet oranı
77 %
Veritabanı kullanımı
19 %
Atılan trafik
0 %
Filo maliyeti
4,00 $/h
Şimdiye kadarki maliyet
0,00 $
Önbellekteki yanıtların ortalama yaşı
30 s
Hatalı derlemedeki trafik
0 %
Kullanılabilir öneriler
100 %
Eğilim
Kriz senaryoları
Seviye 1 · Hatalı sürüm
Saat 09:10'da yeni bir derleme yayına çıkıyor. Ay zaten zor geçti: hata bütçesinin yalnızca %20'si kaldı. Dağıtımdan dakikalar sonra tüketim hızı çağrısı geliyor. Bütçeyi koruyun.
Sonda kalan hata bütçesi ≥ %18,5
Dağıtımdan sonra ortalama hata oranı ≤ %0,65
Filo maliyeti ≤ 9,50 $
Seviye 2 · Ani kalabalık
Hizmete giden bir bağlantı hızla yayılıyor ve bu sabah bir ara trafik dalgası bekleniyor — ne zaman ya da ne kadar büyük olacağını kimse bilmiyor. Yeni örneklerin bugün açılması 8 dakika sürüyor. Dalga geldiğinde, boş kapasiteye para yakmadan hataları ve gecikmeyi düşük tutun.
Ortalama hata oranı ≤ %0,2
Ortalama p99 gecikme ≤ 400 ms
Ortalama atılan trafik ≤ %5
Toplam maliyet ≤ 21 $
Öneriler sürenin ≥ %85'inde kullanılabilir
Seviye 3 · Soğuk önbellek
Öğle zirvesinde bir bakım betiği tüm önbelleği boşaltıyor. Her istek şimdi, her zamanki %85 isabet oranına göre boyutlandırılmış veritabanına gidiyor. Veritabanını aşırı yüklemeden servisi geri getirin.
Ortalama hata oranı ≤ %1,5
İlk dakikadan sonra veritabanı kullanımı hiçbir zaman %90 üzerine çıkmasın
Önbellekteki yanıtların ortalama yaşı ortalama ≤ 90 sn
Toplam maliyet ≤ 9 $
Öneriler sürenin ≥ %80'inde kullanılabilir
Ortalama atılan trafik ≤ %5
Dayanak — sayıların ardındaki model
Simülatörün kullandığı her bağıntı, kaynağıyla birlikte. Varsayım olarak işaretlenen sabitler örnek kalibrasyonlardır.
İstekler günlük bir eğriyi ve bozucu etkileri izler; dakika başına sayı rastgeledir (Poisson, normal yaklaşım) ve biraz dalgalıdır.
λ(t) = base × (1 + 0.25·sin(2π(t + clock − 6 h)/24 h)) × surge(t), clock = time of day at the start (peak at 12:00); count/min ≈ N(60λ, √(60λ)) × (1 + N(0, 0.02))[6]Varsayım: işçi sayıları, servis süreleri, veritabanı kapasitesi, önbellek boyutu, yenileme hızı, fiyatlar ve hatalı derlemenin hata oranı orta ölçekli bir web servisi için örnek değerlerdir.
Erlang C: bir isteğin boş bir işçi için beklemek zorunda kalma olasılığı (M/M/N sisteminde).
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Bekleme süresi kuyruğu: t'den uzun bekleme olasılığı üstel azalır; 2 sn zaman aşımında hâlâ bekleyen istekler başarısız olur. Kapasitenin ötesinde fazlalık başarısız olur.
Servis süresi ve bekleme süresi kantillerinden p99 gecikme.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Yaklaşım: hizmet ve bekleme kantillerini toplamak, toplamlarının kesin p99'u değildir (biraz yüksek ya da düşük çıkabilir); istekler milisaniyeler sürdüğü için kuyruk her dakika içinde kararlı kabul edilir.
Little yasası: meşgul işçiler = geliş hızı × serviste geçen süre.
TTL önbelleği: rastgele isteklerde her ıskalama, isteklerin isabet aldığı bir TTL dönemi başlatır.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Önbellek ıskalamaları veritabanını yükler; kuyruk gecikmesi ona dokunan her isteği yavaşlatır ve uygulama işçilerini de doldurur.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Varsayım: işçi sayıları, servis süreleri, veritabanı kapasitesi, önbellek boyutu, yenileme hızı, fiyatlar ve hatalı derlemenin hata oranı orta ölçekli bir web servisi için örnek değerlerdir.
SLO ve hata bütçesi: tüketim hızı, bütçenin izin verilenden kaç kat hızlı harcandığını söyler.
budget = 1 − SLO = 0.1 %; burn = error rate / 0.1 %; Δbudget per min = burn / 43,200; burn (1 h) = mean error rate over the last 60 min / 0.1 % (window pre-filled with the opening minute)[1][2]
Açılış gecikmesi ve bekleme süresi olan hedef izlemeli otomatik ölçekleyici.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Varsayım: işçi sayıları, servis süreleri, veritabanı kapasitesi, önbellek boyutu, yenileme hızı, fiyatlar ve hatalı derlemenin hata oranı orta ölçekli bir web servisi için örnek değerlerdir.
Modelin kullandığı diğer işletme sabitleri.
16 workers/instance · app time 50 ms (+20 ms and +1 query with the feature on) · 2 queries/request · DB 4,000 queries/s · 20,000 hot objects · cache refill τ = 30 min (slower while the DB is saturated) · warm-up job +12 %/min for 6 min, +600 queries/s · timeout 2 s · 30 % low-priority traffic · bad build +5 % errors, ×1.25 CPU · rollback 5 min · $0.40 per instance-hour · scale-in by ≤ 20 % of the fleet after 10 quiet minutes · up to 40 instancesVarsayım: işçi sayıları, servis süreleri, veritabanı kapasitesi, önbellek boyutu, yenileme hızı, fiyatlar ve hatalı derlemenin hata oranı orta ölçekli bir web servisi için örnek değerlerdir.
Rastgelelik: tohumlu bir mulberry32 üreteci; kullanılan dağılımlar — düzgün, üstel (ters CDF), normal (Box–Muller), Poisson (Knuth). Tohum gösterilir ve paylaşılabilir.
M. Harchol-Balter — Performance Modeling and Design of Computer Systems: Queueing Theory in Action (M/M/k, server farms, capacity provisioning) — Cambridge University Press, 2013