IT-operaasjes — betrouberens fan tsjinsten Live model

Do hast stânby foar in webtsjinst: in lestferdieler foar in float eksimplaren, in cache foar in databank, en in beskikberensdoel fan 99,9 %. Elke minút berekkenet it model wachtrigefertraging, time-outs, cachetreffers en databanklêst út learboekformules — en wat dyn besluten kostje.

Wat jo leare sille

Simulator

Tiid 0 min
Fersiken 1125 · Flaterrate 0,00% · p99-latinsje 342 ms · Eksimplaren dy’t betsjinje 10 (+0) · Cache-trefferrate 77% · Databankbenutting 19% · Oerbleaun flaterbudzjet (30 dagen) 50,0%⇉1125 req/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msFloatbenutting 52%Cache-trefferrate 77%Databankbenutting 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • Eksimplaar betsjinnet
  • Eksimplaar start op
  • Eksimplaar op de minne build
  • Frije plak
  • Ynkommende fersiken

Regelers

Ûndergrins foar de float. Ferheegje start daliks eksimplaren — se hawwe de opstartfertraging noch nedich foardat se betsjinje.

Doelrjochte regeling op de benutting; gjin nij opskaalje salang't der noch eksimplaren opstarte. Út = krekt it minimum.

Leger = mear romte en mear kosten. Mjitten benutting kin net boppe 100 % komme, dus in fersêde float groeit allinnich stap foar stap.

Langere TTL = mear treffers, mar antwurden kinne âlder wêze (gemiddelde leeftyd ≈ TTL/2).

Laadt 6 minuten lang faak brûkte kaaien (+12 % fan de cache per minút) tsjin de priis fan 600 ekstra databankfragen/s.

Diel fan de 30 % lege prioriteit (prefetch, batch, crawlers) dat by de lestferdieler ôfwiisd wurdt mei „besykje letter wer”.

De swiere funksje foeget 20 ms CPU en ien databankfraach per fersyk ta. Út = kontrolearre efterútgong.

Set de lêste goede build op in farske float út (5 min, twa kear yn rekken brocht) en skeakelt dan it ferkear om. Opnij drukke start de tarieding op ’e nij; sûnder minne build yn it libben kostet it allinnich jild.

Yndikatoaren

Flaterrate
0,00%
normaal
p99-latinsje
342ms
normaal
Oerbleaun flaterbudzjet (30 dagen)
50,0%
normaal
Floatbenutting
52%
normaal
Ferbrûkssnelheid (1 h)0,0 ×
Fersiken1125 req/s
Eksimplaren dy’t betsjinje10
Eksimplaren dy’t opstarte0
Cache-trefferrate77 %
Databankbenutting19 %
Ôfstjitten ferkear0 %
Floatkosten4,00 $/h
Kosten oant no ta0,00 $
Gemiddelde leeftyd fan cachte antwurden30 s
Ferkear op de minne build0 %
Oanbefellings beskikber100 %

Trend

Flaterrate: — %20,000,00

Krisissenario's

Nivo 1 · Minne release

Om 09:10 giet in nije build út. De moanne wie al hurd: mar 20 % fan it flaterbudzjet is oer. Minuten nei de útrol giet it ferbrûkssnelheidsalarm ôf. Beskermje it budzjet.

  • Oerbleaun flaterbudzjet oan it ein ≥ 18,5 %
  • Gemiddelde flaterrate ≤ 0,65 % nei de útrol
  • Floatkosten ≤ $ 9,50

Nivo 2 · Mannichte fan besikers

In keppeling nei de tsjinst ferspriedt him fluch en der wurdt ergens fan moarn in ferkearspiek ferwachte — nimmen wit wannear of hoe grut. Nije ynstânsjes hawwe hjoed 8 minuten nedich om te starten. As er komt, hâld flaters en latinsje leech sûnder jild te ferbaarnen oan net brûkte kapasiteit.

  • Gemiddelde flaterrate ≤ 0,2 %
  • Gemiddelde p99-latinsje ≤ 400 ms
  • Gemiddeld ôfstjitten ferkear ≤ 5 %
  • Totale kosten ≤ $ 21
  • Oanbefellings beskikber ≥ 85 % fan de tiid

Nivo 3 · Kâlde cache

Op de middeispiek leechmakket in ûnderhâldsskript de hiele cache. Elk fersyk giet no nei de databank, dy’t grutte hat foar de gewoane trefferrate fan 85 %. Krij de tsjinst werom sûnder de databank te oerbelêsten.

  • Gemiddelde flaterrate ≤ 1,5 %
  • Databankbenutting nea boppe 90 % nei de earste minút
  • Gemiddelde leeftyd fan cachte antwurden ≤ 90 s yn trochsneed
  • Totale kosten ≤ $ 9
  • Oanbefellings beskikber ≥ 80 % fan de tiid
  • Gemiddeld ôfstjitten ferkear ≤ 5 %

Basis — it model efter de sifers

Elke relaasje dy't de simulator brûkt, mei de boarne. Konstanten dy't as oanname markearre binne, binne yllustrative kalibraasjes.

Fersiken folgje in deikurve plus steuringen; it oantal per minút is willekeurich (Poisson, normale benadering) mei in bytsje bursten.
λ(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]Oanname: oantal workers, betsjinningstiden, databankkapasiteit, cachegrutte, fersnelling fan opfolling, prizen en de flaterrate fan de minne build binne yllustrative wearden foar in middelgrutte webtsjinst.
Erlang C: de kâns dat in fersyk op in frije worker wachtsje moat yn in M/M/N-systeem.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Sturt fan de wachttiid: de kâns om langer as t te wachtsjen nimt eksponinsjeel ôf; fersiken dy’t by de time-out fan 2 s noch wachtsje, mislearje. Boppe de kapasiteit mislearret it oerskot.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
p99-latinsje út de kwantilen fan betsjinningstiid en wachttiid.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Benadering: it optellen fan de kwantilen fan tsjinst- en wachttiid is net de krekte p99 fan harren som (it kin in bytsje te heech of te leech wêze); de rige wurdt binnen elke minút as stasjonêr behannele, om’t fersiken millisekonden duorje.
De wet fan Little: drokke workers = oankomstrate × betsjinningstiid.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL-cache: by willekeurige fersiken begjint elke misser in TTL-perioade wêryn fersiken treffe.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Cache-missers belêste de databank; har wachtrigefertraging fertraget elk fersyk dat har rekket, wat ek de app-workers fol makket.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Oanname: oantal workers, betsjinningstiden, databankkapasiteit, cachegrutte, fersnelling fan opfolling, prizen en de flaterrate fan de minne build binne yllustrative wearden foar in middelgrutte webtsjinst.
SLO en flaterbudzjet: de ferbrûkssnelheid seit hoefolle kear flugger as tastien it budzjet útjûn wurdt.
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]
Doelfolgjende autoscaler mei in opstartfertraging en in ôfkoelperioade.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Oanname: oantal workers, betsjinningstiden, databankkapasiteit, cachegrutte, fersnelling fan opfolling, prizen en de flaterrate fan de minne build binne yllustrative wearden foar in middelgrutte webtsjinst.
Oare wurkkonstanten dy’t it model brûkt.
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 instancesOanname: oantal workers, betsjinningstiden, databankkapasiteit, cachegrutte, fersnelling fan opfolling, prizen en de flaterrate fan de minne build binne yllustrative wearden foar in middelgrutte webtsjinst.

Willekeur: in seeded mulberry32-generator; brûkte ferdielingen — unifoarm, eksponinsjeel (omkearde CDF), normaal (Box–Muller), Poisson (Knuth). It seed wurdt toand en is te dielen.

Boarnen

  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

Wa docht dit foar de kost

Edukatyf model — net foar operasjonele beslissingen. Echte lokaasjes kalibrearje elke konstante op har eigen apparatuer en gegevens.