Operacionet IT — besueshmëria e sitit Model i drejtpërdrejtë

Ju jeni në detyrë për një shërbim ueb: një balancues ngarkese përpara një flote instancash, një cache përpara një baze të dhënash, dhe një objektiv disponueshmërie 99,9 %. Çdo minutë modeli llogarit vonesën e radhës, afatet e skaduara, goditjet e cache dhe ngarkesën e bazës së të dhënave nga formula teksti — dhe sa kushtojnë vendimet tuaja.

Çfarë do të mësosh

Simulatori

Koha 0 min
Kërkesa 1125 · Shkalla e gabimeve 0,00% · Vonesa p99 342 ms · Instanca që shërbejnë 10 (+0) · Shkalla e goditjeve të cache 77% · Shfrytëzimi i bazës së të dhënave 19% · Buxheti i gabimeve i mbetur (30 ditë) 50,0%⇉1125 kërk./s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msShfrytëzimi i flotës 52%Shkalla e goditjeve të cache 77%Shfrytëzimi i bazës së të dhënave 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • Instancë që shërben
  • Instancë që po ndizet
  • Instancë në ndërtimin e keq
  • Vend i lirë
  • Kërkesa që mbërrijnë

Kontrollet

Dyshemeja e flotës. Rritja e saj nis instanca menjëherë — ato kanë ende nevojë për vonesën e ndezjes para se të shërbejnë.

Ndjekje e objektivit sipas shfrytëzimit; nuk ka shkallëzim të ri përderisa instancat ende ndizen. Fikur = saktësisht minimumi.

Më i ulët = më shumë rezervë dhe më shumë kosto. Shfrytëzimi i matur nuk mund të kalojë 100 %, kështu që një flotë e ngopur rritet vetëm hap pas hapi.

TTL më i gjatë = më shumë goditje, por përgjigjet mund të jenë më të vjetra (mosha mesatare ≈ TTL/2).

Ngarkon çelësat e nxehtë për 6 minuta (+12 % e cache në minutë) me çmimin e 600 pyetjeve shtesë në bazën e të dhënave/s.

Pjesa e 30 %-it me përparësi të ulët (prefetch, batch, crawlers) që refuzohet në balancuesin e ngarkesës me “provo më vonë”.

Veçoria e rëndë shton 20 ms CPU dhe një pyetje në bazën e të dhënave për kërkesë. Fikur = degradim i butë.

Rivendos ndërtimin e fundit të mirë në një flotë të re (5 min, e faturuar dy herë), pastaj kalon trafikun. Shtypja përsëri e fillon përgatitjen nga e para; nëse nuk ka ndërtim të keq në punë, kushton vetëm para.

Treguesit

Shkalla e gabimeve
0,00%
normale
Vonesa p99
342ms
normale
Buxheti i gabimeve i mbetur (30 ditë)
50,0%
normale
Shfrytëzimi i flotës
52%
normale
Shkalla e djegies (1 h)0,0 ×
Kërkesa1125 req/s
Instanca që shërbejnë10
Instanca që po ndizen0
Shkalla e goditjeve të cache77 %
Shfrytëzimi i bazës së të dhënave19 %
Trafik i hequr0 %
Kostoja e flotës4,00 $/h
Kostoja deri tani0,00 $
Mosha mesatare e përgjigjeve në cache30 s
Trafiku në ndërtimin e keq0 %
Rekomandime të disponueshme100 %

Trendi

Shkalla e gabimeve: — %20,000,00

Skenarë krizash

Niveli 1 · Publikim i keq

Një ndërtim i ri del në 09:10. Muaji ka qenë tashmë i vështirë: ka mbetur vetëm 20 % e buxhetit të gabimeve. Minuta pas vendosjes bie alarmi i shkallës së djegies. Mbro buxhetin.

  • Buxheti i gabimeve i mbetur në fund ≥ 18,5 %
  • Shkalla mesatare e gabimeve ≤ 0,65 % pas vendosjes
  • Kostoja e flotës ≤ $9,50

Niveli 2 · Turmë e befasishme

Një lidhje drejt shërbimit po përhapet shpejt dhe pritet një shpërthim trafiku diku këtë mëngjes — askush nuk e di kur, apo sa i madh. Instancat e reja kanë nevojë për 8 minuta për t'u nisur sot. Kur të vijë, mbaji gabimet dhe vonesën të ulëta pa djegur para për kapacitet të papunë.

  • Shkalla mesatare e gabimeve ≤ 0,2 %
  • Vonesa mesatare p99 ≤ 400 ms
  • Trafiku mesatar i hequr ≤ 5 %
  • Kostoja totale ≤ $21
  • Rekomandime të disponueshme ≥ 85 % të kohës

Niveli 3 · Cache e ftohtë

Në pikun e mesditës një skenar mirëmbajtjeje e shpëlan gjithë cache-n. Çdo kërkesë tani shkon te baza e të dhënave, e dimensionuar për shkallën e zakonshme të goditjeve 85 %. Ktheje shërbimin pa mbingarkuar bazën e të dhënave.

  • Shkalla mesatare e gabimeve ≤ 1,5 %
  • Shfrytëzimi i bazës së të dhënave kurrë mbi 90 % pas minutës së parë
  • Mosha mesatare e përgjigjeve në cache ≤ 90 s mesatarisht
  • Kostoja totale ≤ $9
  • Rekomandime të disponueshme ≥ 80 % të kohës
  • Trafiku mesatar i hequr ≤ 5 %

Baza — modeli pas numrave

Çdo marrëdhënie që përdor simulatori, me burimin e saj. Konstantet e shënuara si supozime janë kalibrime ilustruese.

Kërkesat ndjekin një kurbë ditore plus shqetësime; numri për minutë është i rastësishëm (Poisson, përafrim normal) me pak shpërthime.
λ(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]Supozim: numri i punëtorëve, kohët e shërbimit, kapaciteti i bazës së të dhënave, madhësia e cache, shpejtësia e mbushjes, çmimet dhe shkalla e gabimeve e ndërtimit të keq janë vlera ilustruese për një shërbim ueb të mesëm.
Erlang C: probabiliteti që një kërkesë duhet të presë për një punëtor të lirë në një sistem M/M/N.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Bishti i kohës së pritjes: shansi për të pritur më gjatë se t bie eksponencialisht; kërkesat që ende presin në afatin 2-s dështojnë. Përtej kapacitetit, teprica dështon.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
Vonesa p99 nga kuantilet e kohës së shërbimit dhe kohës së pritjes.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Përafrim: mbledhja e kuantileve të shërbimit dhe pritjes nuk është p99 i saktë i shumës së tyre (mund të dalë pak i lartë ose i ulët); radha trajtohet si e qëndrueshme brenda çdo minute sepse kërkesat zgjasin milisekonda.
Ligji i Little: punëtorë të zënë = shpejtësia e mbërritjes × koha në shërbim.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
Cache me TTL: me kërkesa të rastësishme, çdo humbje nis një periudhë TTL gjatë së cilës kërkesat godasin.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Humbjet e cache ngarkojnë bazën e të dhënave; vonesa e radhës e saj ngadalëson çdo kërkesë që e prek, gjë që mbush edhe punëtorët e aplikacionit.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Supozim: numri i punëtorëve, kohët e shërbimit, kapaciteti i bazës së të dhënave, madhësia e cache, shpejtësia e mbushjes, çmimet dhe shkalla e gabimeve e ndërtimit të keq janë vlera ilustruese për një shërbim ueb të mesëm.
SLO dhe buxheti i gabimeve: shkalla e djegies tregon sa herë më shpejt se sa lejohet po shpenzohet buxheti.
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]
Shkallëzues automatik që ndjek objektivin, me vonesë ndezjeje dhe periudhë ftohjeje.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Supozim: numri i punëtorëve, kohët e shërbimit, kapaciteti i bazës së të dhënave, madhësia e cache, shpejtësia e mbushjes, çmimet dhe shkalla e gabimeve e ndërtimit të keq janë vlera ilustruese për një shërbim ueb të mesëm.
Konstante të tjera operative të përdorura nga modeli.
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 instancesSupozim: numri i punëtorëve, kohët e shërbimit, kapaciteti i bazës së të dhënave, madhësia e cache, shpejtësia e mbushjes, çmimet dhe shkalla e gabimeve e ndërtimit të keq janë vlera ilustruese për një shërbim ueb të mesëm.

Rastësia: një gjenerator mulberry32 me farë; shpërndarjet e përdorura — uniforme, eksponenciale (CDF e anasjellë), normale (Box–Muller), Poisson (Knuth). Fara shfaqet dhe mund të ndahet.

Burimet

  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

Kush e bën këtë si profesion

Model edukativ — jo për vendime operacionale. Vendet reale i kalibrojnë të gjitha konstantet sipas pajisjeve dhe të dhënave të tyre.