IT-operatsioonid — saidi töökindlus Reaalaja mudel

Sul on valve veebiteenusel: koormusjaotur instantside pargi ees, vahemälu andmebaasi ees ja 99,9 % käideldavuse eesmärk. Mudel arvutab igal minutil järjekorraviivituse, ajalõpud, vahemälu tabamused ja andmebaasi koormuse õpikuvalemitest — ning selle, mida sinu otsused maksavad.

Mida sa õpid

Simulaator

Aeg 0 min
Päringud 1125 · Veamäär 0,00% · p99 latentsus 342 ms · Teenindavad instantsid 10 (+0) · Vahemälu tabamuse määr 77% · Andmebaasi kasutus 19% · Veaeelarvet jäänud (30 päeva) 50,0%⇉1125 päringut/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msPargi kasutus 52%Vahemälu tabamuse määr 77%Andmebaasi kasutus 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • Instants teenindab
  • Instants käivitub
  • Instants halval versioonil
  • Vaba koht
  • Sissetulevad päringud

Juhtimine

Pargi alampiir. Selle tõstmine käivitab instantsid kohe — nad vajavad endiselt käivitusviivitust enne teenindamist.

Sihtmärgi jälgimine koormuse järgi; uut väljaskaleerimist ei tehta, kuni instantsid alles käivituvad. Väljas = täpselt miinimum.

Madalam = rohkem varu ja rohkem kulu. Mõõdetud koormus ei saa ületada 100 %, seega küllastunud park kasvab vaid samm-sammult.

Pikem TTL = rohkem tabamusi, kuid vastused võivad olla vanemad (keskmine vanus ≈ TTL/2).

Laadib kuumad võtmed 6 minuti jooksul (+12 % vahemälust minutis) hinnaga 600 lisaandmebaasipäringut/s.

Madala prioriteediga 30 % (eellaadimine, partii, roomikud) osa, mis lükatakse koormusjaoturis tagasi sõnumiga „proovi hiljem uuesti“.

Raske funktsioon lisab päringu kohta 20 ms CPU-d ja ühe andmebaasipäringu. Väljas = kontrollitud lihtsustamine.

Võtab kasutusele viimase hea järgu uuel pargil (5 min, arveldatakse kahekordselt) ja lülitab seejärel liikluse ümber. Uuesti vajutamine käivitab ettevalmistuse uuesti; kui halba järku ei ole töös, maksab see vaid raha.

Näitajad

Veamäär
0,00%
normaalne
p99 latentsus
342ms
normaalne
Veaeelarvet jäänud (30 päeva)
50,0%
normaalne
Pargi kasutus
52%
normaalne
Põlemiskiirus (1 h)0,0 ×
Päringud1125 req/s
Teenindavad instantsid10
Käivituvad instantsid0
Vahemälu tabamuse määr77 %
Andmebaasi kasutus19 %
Vähendatud liiklus0 %
Pargi kulu4,00 $/h
Kulu siiani0,00 $
Vahemälus olevate vastuste keskmine vanus30 s
Liiklus halval versioonil0 %
Soovitused saadaval100 %

Trend

Veamäär: — %20,000,00

Kriisistsenaariumid

Tase 1 · Halb väljalase

Kell 09:10 läheb välja uus versioon. Kuu on olnud juba raske: veaeelarvet on alles vaid 20 %. Minutid pärast juurutamist lööb põlemiskiiruse teavitus häire. Kaitse eelarvet.

  • Veaeelarvet jäänud lõpuks ≥ 18,5 %
  • Keskmine veamäär ≤ 0,65 % pärast juurutamist
  • Pargi kulu ≤ $9,50

Tase 2 · Äkiline rahvahulk

Teenuse link levib kiiresti ja liiklustippu oodatakse mõnel hetkel täna hommikul — keegi ei tea millal ega kui suurt. Uute instantside käivitamine võtab täna 8 minutit. Kui tipp tuleb, hoia vead ja latentsus väikesed, põletamata raha jõudeolevale võimsusele.

  • Keskmine veamäär ≤ 0,2 %
  • Keskmine p99 latentsus ≤ 400 ms
  • Keskmine vähendatud liiklus ≤ 5 %
  • Kogukulu ≤ $21
  • Soovitused saadaval ≥ 85 % ajast

Tase 3 · Külm vahemälu

Lõunatipu ajal tühjendab hooldusskript kogu vahemälu. Iga päring läheb nüüd andmebaasi, mis oli mõõtmestatud tavapärase 85 % tabamuse määra jaoks. Too teenus tagasi andmebaasi ülekoormamata.

  • Keskmine veamäär ≤ 1,5 %
  • Andmebaasi kasutus kunagi üle 90 % pärast esimest minutit
  • Vahemälus olevate vastuste keskmine vanus ≤ 90 s keskmiselt
  • Kogukulu ≤ $9
  • Soovitused saadaval ≥ 80 % ajast
  • Keskmine vähendatud liiklus ≤ 5 %

Alus — arvude taga olev mudel

Kõik seosed, mida simulaator kasutab, koos allikaga. Eeldustena märgitud konstandid on illustratiivsed kalibreeringud.

Päringud järgivad päevakõverat pluss häireid; päringute arv minutis on juhuslik (Poisson, normaalne lähendus) veidi purskelisusega.
λ(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]Eeldus: töötajate arv, teenindusajad, andmebaasi võimsus, vahemälu suurus, täitumiskiirus, hinnad ja halva versiooni veamäär on illustreerivad väärtused keskmise veebiteenuse kohta.
Erlang C: tõenäosus, et päring peab M/M/N süsteemis vaba töötajat ootama.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Ooteaja saba: tõenäosus oodata kauem kui t langeb eksponentsiaalselt; päringud, mis ootavad 2 s ajalõpu hetkel, ebaõnnestuvad. Üle võimsuse ebaõnnestub ülejääk.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
p99 latentsus teenindusaja ja ooteaja kvantiilidest.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Lähendus: teenindus- ja ooteaja kvantiilide liitmine ei ole nende summa täpne p99 (see võib olla veidi liiga kõrge või madal); järjekorda käsitletakse iga minuti sees püsivana, sest päringud võtavad millisekundeid.
Littli seadus: hõivatud töötajad = saabumiskiirus × teenindusaeg.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL-vahemälu: juhuslike päringute korral algab iga möödalaskmine TTL-perioodiga, mille jooksul päringud tabavad.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Muud mudelis kasutatavad tööalased konstandid.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Eeldus: töötajate arv, teenindusajad, andmebaasi võimsus, vahemälu suurus, täitumiskiirus, hinnad ja halva versiooni veamäär on illustreerivad väärtused keskmise veebiteenuse kohta.
SLO ja veaeelarve: põlemiskiirus (burn rate) ütleb, mitu korda kiiremini kui lubatud eelarvet kulutatakse.
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]
Sihtmärki jälgiv automaatskaleerija käivitusviivituse ja jahtumisajaga.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Eeldus: töötajate arv, teenindusajad, andmebaasi võimsus, vahemälu suurus, täitumiskiirus, hinnad ja halva versiooni veamäär on illustreerivad väärtused keskmise veebiteenuse kohta.
Vahemälu möödalaskmised koormavad andmebaasi; selle järjekorraviivitus aeglustab iga päringut, mis seda puudutab, ja see täidab ka rakenduse töötajad.
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 instancesEeldus: töötajate arv, teenindusajad, andmebaasi võimsus, vahemälu suurus, täitumiskiirus, hinnad ja halva versiooni veamäär on illustreerivad väärtused keskmise veebiteenuse kohta.

Juhuslikkus: seemnega mulberry32 generaator; kasutatud jaotused — ühtlane, eksponentsiaalne (pöördkumulatiivne jaotusfunktsioon), normaal (Box–Muller), Poisson (Knuth). Seeme on nähtav ja jagatav.

Allikad

  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

Kes seda elukutseliselt teeb

Õppemudel — ei ole mõeldud operatiivotsusteks. Tegelikud rajatised kalibreerivad iga konstandi oma seadmete ja andmete järgi.