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

Simülatör

Zaman 0 dk
İstekler 1125 · Hata oranı 0,00% · p99 gecikme 342 ms · Hizmet veren örnekler 10 (+0) · Önbellek isabet oranı 77% · Veritabanı kullanımı 19% · Kalan hata bütçesi (30 gün) 50,0%⇉1125 istek/sn▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msFilo kullanımı 52%Önbellek isabet oranı 77%Veritabanı kullanımı 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • 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 ×
İstekler1125 req/s
Hizmet veren örnekler10
Açılan örnekler0
Önbellek isabet oranı77 %
Veritabanı kullanımı19 %
Atılan trafik0 %
Filo maliyeti4,00 $/h
Şimdiye kadarki maliyet0,00 $
Önbellekteki yanıtların ortalama yaşı30 s
Hatalı derlemedeki trafik0 %
Kullanılabilir öneriler100 %

Eğilim

Hata oranı: — %20,000,00

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.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
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.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
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.

Kaynaklar

  1. Site Reliability Engineering — Ch. 3 Embracing Risk (error budgets), Ch. 4 Service Level Objectives — Beyer, Jones, Petoff, Murphy (eds.), O'Reilly, 2016
  2. The Site Reliability Workbook — Ch. 5 Alerting on SLOs (burn rate; 14.4× over 1 h = 2 % of a 30-day budget) — Beyer, Murphy, Rensin, Kawahara, Thorne (eds.), O'Reilly, 2018
  3. Teletraffic Engineering Handbook — Erlang C formula; waiting-time distribution for M/M/n, FCFS — ITU-D Study Group 2 Question 16/2 (V. B. Iversen), 2005
  4. J. D. C. Little — A Proof for the Queuing Formula: L = λW — Operations Research 9(3):383–387, 1961
  5. J. Jung, A. W. Berger, H. Balakrishnan — Modeling TTL-based Internet Caches — IEEE INFOCOM 2003, 2003
  6. 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

Bunu meslek olarak kim yapar

Eğitim amaçlı model — operasyonel kararlar için değildir. Gerçek tesisler her sabiti kendi ekipmanlarına ve verilerine göre kalibre eder.