IT operacije — pouzdanost sajta Živi model

Dežurni ste za veb-servis: balanser opterećenja ispred flote instanci, keš ispred baze podataka i cilj dostupnosti od 99,9 %. Svake minute model iz udžbeničkih formula računa kašnjenje u redu, tajmaute, pogotke keša i opterećenje baze — i koliko koštaju vaše odluke.

Šta ćete naučiti

Simulator

Vrijeme 0 min
Zahtjevi 1125 · Stopa grešaka 0,00% · p99 latencija 342 ms · Instance koje poslužuju 10 (+0) · Stopa pogodaka keša 77% · Iskorištenost baze podataka 19% · Preostali budžet grešaka (30 dana) 50,0%⇉1125 zahtj./s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msIskorištenost flote 52%Stopa pogodaka keša 77%Iskorištenost baze podataka 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • Instanca poslužuje
  • Instanca se podiže
  • Instanca na lošem buildu
  • Slobodan slot
  • Dolazni zahtjevi

Kontrole

Donja granica flote. Podizanje odmah pokreće instance — ali im i dalje treba kašnjenje podizanja prije posluživanja.

Praćenje cilja po iskorištenosti; nema novog skaliranja dok se instance još podižu. Isključeno = tačno minimum.

Niže = više rezerve i veći trošak. Izmjerena iskorištenost ne može preći 100 %, pa zasićena flota raste samo korak po korak.

Duži TTL = više pogodaka, ali odgovori mogu biti stariji (prosječna starost ≈ TTL/2).

Učitava vruće ključeve 6 minuta (+12 % keša po minuti) po cijenu 600 dodatnih upita bazi/s.

Udio niskoprioritetnih 30 % (prefetch, batch, crawleri) odbijen na balanseru opterećenja s „pokušajte kasnije“.

Teška funkcija dodaje 20 ms CPU-a i jedan upit bazi po zahtjevu. Isključeno = graciozna degradacija.

Ponovo postavlja posljednji ispravan build na svježu flotu (5 min, naplaćuje se dvostruko), a zatim prebacuje saobraćaj. Ponovni pritisak ponovo pokreće pripremu; ako nijedan loš build nije aktivan, košta samo novac.

Pokazatelji

Stopa grešaka
0,00%
normalno
p99 latencija
342ms
normalno
Preostali budžet grešaka (30 dana)
50,0%
normalno
Iskorištenost flote
52%
normalno
Brzina sagorijevanja (1 h)0,0 ×
Zahtjevi1125 req/s
Instance koje poslužuju10
Instance se podižu0
Stopa pogodaka keša77 %
Iskorištenost baze podataka19 %
Odbačen saobraćaj0 %
Trošak flote4,00 $/h
Dosadašnji trošak0,00 $
Prosječna starost keširanih odgovora30 s
Saobraćaj na lošem buildu0 %
Preporuke dostupne100 %

Trend

Stopa grešaka: — %20,000,00

Krizni scenariji

Nivo 1 · Loše izdanje

Novi build izlazi u 09:10. Mjesec je već bio težak: ostalo je samo 20 % budžeta grešaka. Nekoliko minuta nakon isporuke oglašava se upozorenje o brzini sagorijevanja. Zaštitite budžet.

  • Preostali budžet grešaka na kraju ≥ 18,5 %
  • Prosječna stopa grešaka nakon isporuke ≤ 0,65 %
  • Trošak flote ≤ $9.50

Nivo 2 · Iznenadna gužva

Link do usluge se brzo širi i očekuje se nalet saobraćaja negdje ovog jutra — niko ne zna kada, niti koliko velik. Nove instance danas trebaju 8 minuta da se podignu. Kad naiđe, držite greške i latenciju niskima bez trošenja novca na neiskorišteni kapacitet.

  • Prosječna stopa grešaka ≤ 0,2 %
  • Prosječna p99 latencija ≤ 400 ms
  • Prosječno odbačeni saobraćaj ≤ 5 %
  • Ukupni trošak ≤ $21
  • Preporuke dostupne ≥ 85 % vremena

Nivo 3 · Hladan keš

Na podnevnom vrhuncu skripta za održavanje briše cijeli keš. Svaki zahtjev sada ide u bazu, dimenzioniranu za uobičajenu stopu pogodaka od 85 %. Vratite servis bez preopterećenja baze.

  • Prosječna stopa grešaka ≤ 1,5 %
  • Iskorištenost baze nikad iznad 90 % nakon prve minute
  • Prosječna starost keširanih odgovora ≤ 90 s u prosjeku
  • Ukupni trošak ≤ $9
  • Preporuke dostupne ≥ 80 % vremena
  • Prosječno odbačeni saobraćaj ≤ 5 %

Osnova — model iza brojeva

Svaka relacija koju simulator koristi, s njenim izvorom. Konstante označene kao pretpostavke su ilustrativne kalibracije.

Zahtjevi slijede dnevnu krivulju plus smetnje; broj po minuti je slučajan (Poisson, normalna aproksimacija) uz malo naglosti.
λ(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]Pretpostavka: broj radnika, vremena usluge, kapacitet baze, veličina keša, brzina punjenja, cijene i stopa grešaka lošeg builda su ilustrativne vrijednosti za veb-servis srednje veličine.
Erlang C: vjerovatnoća da zahtjev mora čekati slobodnog radnika u M/M/N sistemu.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Rep vremena čekanja: šansa čekanja duže od t eksponencijalno pada; zahtjevi koji još čekaju na tajmautu od 2 s ne uspijevaju. Iznad kapaciteta višak ne uspijeva.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
p99 latencija iz kvantila vremena usluge i vremena čekanja.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Aproksimacija: zbir kvantila usluge i čekanja nije tačan p99 njihovog zbira (može biti malo viši ili niži); red se unutar svake minute tretira kao stabilan jer zahtjevi traju milisekunde.
Littleov zakon: zauzeti radnici = brzina dolazaka × vrijeme u usluzi.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL keš: kod slučajnih zahtjeva svaki promašaj pokreće TTL period tokom kojeg zahtjevi pogađaju keš.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Promašaji keša opterećuju bazu; njeno kašnjenje u redu usporava svaki zahtjev koji je dotakne, što puni i radnike aplikacije.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Pretpostavka: broj radnika, vremena usluge, kapacitet baze, veličina keša, brzina punjenja, cijene i stopa grešaka lošeg builda su ilustrativne vrijednosti za veb-servis srednje veličine.
SLO i budžet grešaka: brzina sagorijevanja kaže koliko puta brže od dopuštenog se troši budžet.
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]
Autoskaler koji prati cilj, s kašnjenjem podizanja i periodom hlađenja.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Pretpostavka: broj radnika, vremena usluge, kapacitet baze, veličina keša, brzina punjenja, cijene i stopa grešaka lošeg builda su ilustrativne vrijednosti za veb-servis srednje veličine.
Ostale pogonske konstante koje model koristi.
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 instancesPretpostavka: broj radnika, vremena usluge, kapacitet baze, veličina keša, brzina punjenja, cijene i stopa grešaka lošeg builda su ilustrativne vrijednosti za veb-servis srednje veličine.

Nasumičnost: mulberry32 generator sa seedom; korištene raspodjele — uniformna, eksponencijalna (inverzna CDF), normalna (Box–Muller), Poissonova (Knuth). Seed se prikazuje i može se dijeliti.

Izvori

  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

Ko se time bavi profesionalno

Edukativni model — nije za operativne odluke. Stvarni objekti kalibriraju svaku konstantu prema vlastitoj opremi i podacima.