İT əməliyyatları — saytın etibarlılığı Canlı model

Siz veb xidmət üçün növbətçisiniz: instansiyalar parkının qarşısında yük balanslaşdırıcı, verilənlər bazasının qarşısında keş və 99,9 % əlçatanlıq hədəfi. Hər dəqiqə model növbə gecikməsini, taymautları, keş müraciətlərini və verilənlər bazası yükünü dərslik düsturları ilə hesablayır — və qərarlarınızın nəyə başa gəldiyini.

Nə öyrənəcəksiniz

Simulyator

Vaxt 0 dəq
Sorğular 1125 · Xəta dərəcəsi 0,00% · p99 gecikməsi 342 ms · Xidmət göstərən instansiyalar 10 (+0) · Keşə düşmə dərəcəsi 77% · Verilənlər bazasının istifadə dərəcəsi 19% · Qalan xəta büdcəsi (30 gün) 50,0%⇉1125 sorğu/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msParkın istifadə dərəcəsi 52%Keşə düşmə dərəcəsi 77%Verilənlər bazasının istifadə dərəcəsi 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • İnstansiya xidmət edir
  • İnstansiya yüklənir
  • Pis buildə instansiya
  • Boş yuva
  • Daxil olan sorğular

İdarəetmə

Parkın aşağı həddi. Artırmaq instansiyaları dərhal işə salır — onlar yenə də xidmət etməzdən əvvəl yüklənmə gecikməsinə ehtiyac duyur.

İstifadə dərəcəsi üzrə hədəf izləmə; instansiyalar hələ yüklənərkən yeni genişlənmə yoxdur. Söndürülü: dəqiq minimum.

Aşağı = daha çox ehtiyat və daha çox xərc. Ölçülən istifadə 100 %-i keçə bilməz, ona görə doymuş park yalnız addım-addım böyüyür.

Uzun TTL = daha çox uğurlu müraciət, lakin cavablar daha köhnə ola bilər (orta yaş ≈ TTL/2).

6 dəqiqə ərzində isti açarları yükləyir (dəqiqədə keşin +12 %-i) 600 əlavə verilənlər bazası sorğusu/s bahasına.

Aşağı prioritetli 30 %-in (öncədən yükləmə, toplu, krouler) yük balanslaşdırıcıda “sonra yenidən cəhd edin” ilə rədd edilən payı.

Ağır funksiya hər sorğuya 20 ms CPU və bir verilənlər bazası sorğusu əlavə edir. Söndürülü: yumşaq degradasiya.

Son yaxşı buildi təzə parkda yenidən yerləşdirir (5 dəq, iki dəfə hesablanır), sonra trafiki keçirir. Yenidən basmaq hazırlığı yenidən başladır; canlı pis build yoxdursa, yalnız pul xərcləyir.

Göstəricilər

Xəta dərəcəsi
0,00%
normal
p99 gecikməsi
342ms
normal
Qalan xəta büdcəsi (30 gün)
50,0%
normal
Parkın istifadə dərəcəsi
52%
normal
Yanma sürəti (1 saat)0,0 ×
Sorğular1125 req/s
Xidmət göstərən instansiyalar10
Yüklənən instansiyalar0
Keşə düşmə dərəcəsi77 %
Verilənlər bazasının istifadə dərəcəsi19 %
Atılan trafik0 %
Park xərci4,00 $/h
İndiyədək xərc0,00 $
Keşlənmiş cavabların orta yaşı30 s
Pis buildə trafik0 %
Tövsiyələr mövcuddur100 %

Trend

Xəta dərəcəsi: — %20,000,00

Böhran ssenariləri

Səviyyə 1 · Pis buraxılış

Yeni build saat 09:10-da buraxılır. Ay artıq çətin keçib: xəta büdcəsinin yalnız 20 %-i qalıb. Yerləşdirmədən dəqiqələr sonra yanma sürəti xəbərdarlığı işə düşür. Büdcəni qoruyun.

  • Sonda qalan xəta büdcəsi ≥ 18,5 %
  • Yerləşdirmədən sonra orta xəta dərəcəsi ≤ 0,65 %
  • Park xərci ≤ $9.50

Səviyyə 2 · Qəfil izdiham

Xidmətə keçid sürətlə yayılır və bu səhər nə vaxtsa trafik artımı gözlənilir — nə vaxt və nə qədər böyük olacağını heç kim bilmir. Bu gün yeni instansiyaların işə düşməsi 8 dəqiqə çəkir. O gələndə xətaları və gecikməni aşağı saxlayın, boş gücə pul yandırmayın.

  • Orta xəta dərəcəsi ≤ 0,2 %
  • Orta p99 gecikməsi ≤ 400 ms
  • Orta atılan trafik ≤ 5 %
  • Ümumi xərc ≤ $21
  • Tövsiyələr vaxtın ≥ 85 %-ində mövcuddur

Səviyyə 3 · Soyuq keş

Günorta pikində texniki xidmət skripti bütün keşi boşaldır. İndi hər sorğu adi 85 % keşə düşmə dərəcəsinə görə ölçülmüş verilənlər bazasına gedir. Xidməti verilənlər bazasını həddindən artıq yükləmədən bərpa edin.

  • Orta xəta dərəcəsi ≤ 1,5 %
  • Verilənlər bazasının istifadəsi ilk dəqiqədən sonra heç vaxt 90 %-dən yuxarı deyil
  • Keşlənmiş cavabların orta yaşı orta hesabla ≤ 90 s
  • Ümumi xərc ≤ $9
  • Tövsiyələr vaxtın ≥ 80 %-ində mövcuddur
  • Orta atılan trafik ≤ 5 %

Əsas — rəqəmlərin arxasındakı model

Simulyatorun istifadə etdiyi hər əlaqə mənbəyi ilə birlikdə. Fərziyyə kimi qeyd olunan sabitlər illüstrativ kalibrləmələrdir.

Sorğular gündəlik əyri üstəgəl pozuntuları izləyir; dəqiqəlik say təsadüfidir (Puasson, normal yaxınlaşma) və bir az partlayışlı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]Fərziyyə: işçi sayları, xidmət müddətləri, verilənlər bazasının tutumu, keşin ölçüsü, doldurma sürəti, qiymətlər və pis buildin xəta dərəcəsi orta ölçülü veb xidmət üçün nümunə qiymətlərdir.
Erlang C: M/M/N sistemində sorğunun boş işçi gözləməli olma ehtimalı.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Gözləmə vaxtı quyruğu: t-dən uzun gözləmə ehtimalı eksponensial azalır; 2 saniyəlik taymautda hələ gözləyən sorğular uğursuz olur. Tutumdan artıq hissə uğursuz olur.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
Xidmət və gözləmə vaxtı kvantillərindən p99 gecikməsi.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Təxmini: xidmət və gözləmə kvantillərinin cəmi onların cəminin dəqiq p99-u deyil (bir az yüksək və ya aşağı ola bilər); sorğular millisaniyələr çəkdiyi üçün növbə hər dəqiqə daxilində sabit sayılır.
Little qanunu: məşğul işçilər = gəliş sürəti × xidmətdə vaxt.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL keşi: təsadüfi sorğularda hər buraxılış TTL dövrünü başladır, bu müddətdə sorğular keşə düşür.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Keş buraxılışları verilənlər bazasını yükləyir; onun növbə gecikməsi ona toxunan hər sorğunu ləngidir, bu isə tətbiq işçilərini də doldurur.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Fərziyyə: işçi sayları, xidmət müddətləri, verilənlər bazasının tutumu, keşin ölçüsü, doldurma sürəti, qiymətlər və pis buildin xəta dərəcəsi orta ölçülü veb xidmət üçün nümunə qiymətlərdir.
SLO və xəta büdcəsi: yanma sürəti büdcənin icazə verilənə nisbətən neçə dəfə sürətli xərcləndiyini göstərir.
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]
Yüklənmə gecikməsi və soyuma müddəti olan hədəf izləyən avtomatik miqyaslayıcı.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Fərziyyə: işçi sayları, xidmət müddətləri, verilənlər bazasının tutumu, keşin ölçüsü, doldurma sürəti, qiymətlər və pis buildin xəta dərəcəsi orta ölçülü veb xidmət üçün nümunə qiymətlərdir.
Modelin istifadə etdiyi digər iş sabitləri.
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 instancesFərziyyə: işçi sayları, xidmət müddətləri, verilənlər bazasının tutumu, keşin ölçüsü, doldurma sürəti, qiymətlər və pis buildin xəta dərəcəsi orta ölçülü veb xidmət üçün nümunə qiymətlərdir.

Təsadüfilik: seed-li mulberry32 generatoru; istifadə olunan paylanmalar — bərabər, eksponensial (tərs CDF), normal (Box–Muller), Puasson (Knuth). Seed göstərilir və paylaşıla bilər.

Mənbələr

  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 peşə kimi kim edir

Təhsil modeli — əməliyyat qərarları üçün deyil. Real obyektlər hər sabiti öz avadanlığına və məlumatlarına görə kalibrləyir.