Uendeshaji wa TEHAMA — uaminifu wa tovuti (SRE) Modeli hai

Uko kwenye zamu ya dharura ya huduma ya wavuti: kisawazisha mzigo mbele ya kundi la mashine, kache mbele ya hifadhidata, na lengo la upatikanaji la 99.9 %. Kila dakika modeli hukokotoa ucheleweshaji wa foleni, muda wa kikomo, vibao vya kache na mzigo wa hifadhidata kwa fomula za vitabu vya kiada — na gharama za maamuzi yako.

Utakachojifunza

Kiigaji

Muda 0 min
Maombi 1125 · Kiwango cha makosa 0.00% · Ucheleweshaji wa p99 342 ms · Mashine zinazohudumia 10 (+0) · Kiwango cha vibao vya kache 77% · Matumizi ya hifadhidata 19% · Bajeti ya makosa iliyobaki (siku 30) 50.0%⇉1125 maombi/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msMatumizi ya kundi la mashine 52%Kiwango cha vibao vya kache 77%Matumizi ya hifadhidata 19%⚠ 0.00% · 🔥 0.0×50%$ 4.00/h · Σ $0.00
  • Mashine inahudumia
  • Mashine inawaka
  • Mashine kwenye ujenzi mbaya
  • Nafasi huru
  • Maombi yanayoingia

Vidhibiti

Sakafu ya kundi la mashine. Kuipandisha huanzisha mashine mara moja — bado zinahitaji ucheleweshaji wa kuwaka kabla ya kuhudumia.

Kufuatilia lengo la matumizi; hakuna upanuzi mpya wakati mashine bado zinawaka. Imezimwa = kiwango cha chini kabisa.

Chini = nafasi zaidi na gharama zaidi. Matumizi yaliyopimwa hayawezi kuzidi 100 %, kwa hivyo kundi lililojaa hukua hatua kwa hatua tu.

TTL ndefu = vibao vingi, lakini majibu yanaweza kuwa ya zamani (umri wastani ≈ TTL/2).

Hupakia funguo zinazotumika sana kwa dakika 6 (+12 % ya kache kwa dakika) kwa gharama ya maswali 600 ya ziada ya hifadhidata/s.

Sehemu ya 30 % ya kipaumbele cha chini (upakiaji wa awali, kundi, roboti za utafutaji) inayokataliwa kwenye kisawazisha mzigo kwa "jaribu tena baadaye".

Kipengele kizito huongeza ms 20 za CPU na swali moja la hifadhidata kwa kila ombi. Imezimwa = kushuka kwa utendaji kwa udhibiti.

Hupeleka tena toleo zuri la mwisho kwenye kundi jipya la seva (dakika 5, hutozwa mara mbili), kisha hubadilisha trafiki. Kubonyeza tena huanzisha upya maandalizi; bila toleo baya linalofanya kazi, hugharimu pesa tu.

Viashiria

Kiwango cha makosa
0.00%
kawaida
Ucheleweshaji wa p99
342ms
kawaida
Bajeti ya makosa iliyobaki (siku 30)
50.0%
kawaida
Matumizi ya kundi la mashine
52%
kawaida
Kiwango cha kuchoma (saa 1)0.0 ×
Maombi1125 req/s
Mashine zinazohudumia10
Mashine zinazowaka0
Kiwango cha vibao vya kache77 %
Matumizi ya hifadhidata19 %
Trafiki iliyokatwa0 %
Gharama ya kundi la mashine4.00 $/h
Gharama hadi sasa0.00 $
Umri wastani wa majibu ya kache30 s
Trafiki kwenye ujenzi mbaya0 %
Mapendekezo yanapatikana100 %

Mwelekeo

Kiwango cha makosa: — %20.000.00

Matukio ya mgogoro

Kiwango 1 · Toleo baya

Ujenzi mpya unatolewa saa 09:10. Mwezi tayari umekuwa mgumu: ni 20 % tu ya bajeti ya makosa iliyobaki. Dakika chache baada ya kutoa, tahadhari ya kiwango cha kuchoma inalia. Linda bajeti.

  • Bajeti ya makosa iliyobaki mwishoni ≥ 18.5 %
  • Kiwango wastani cha makosa ≤ 0.65 % baada ya kutoa
  • Gharama ya kundi la mashine ≤ $9.50

Kiwango 2 · Umati wa ghafla

Kiungo cha huduma kinasambaa haraka na kuongezeka kwa trafiki kunatarajiwa wakati fulani asubuhi hii — hakuna anayejua lini, wala ukubwa gani. Mashine mpya zinahitaji dakika 8 kuanza leo. Itakapokuja, weka makosa na ucheleweshaji chini bila kuchoma pesa kwenye uwezo usiotumika.

  • Kiwango wastani cha makosa ≤ 0.2 %
  • Ucheleweshaji wastani wa p99 ≤ ms 400
  • Trafiki wastani iliyokatwa ≤ 5 %
  • Gharama jumla ≤ $21
  • Mapendekezo yanapatikana ≥ 85 % ya muda

Kiwango 3 · Kache baridi

Kwenye kilele cha adhuhuri, hati ya matengenezo hufuta kache yote. Kila ombi sasa huenda kwenye hifadhidata, iliyopimwa kwa kiwango cha kawaida cha vibao cha 85 %. Rudisha huduma bila kupakia hifadhidata kupita kiasi.

  • Kiwango wastani cha makosa ≤ 1.5 %
  • Matumizi ya hifadhidata yasizidi 90 % kamwe baada ya dakika ya kwanza
  • Umri wastani wa majibu ya kache ≤ s 90 kwa wastani
  • Gharama jumla ≤ $9
  • Mapendekezo yanapatikana ≥ 80 % ya muda
  • Trafiki wastani iliyokatwa ≤ 5 %

Msingi — modeli iliyo nyuma ya namba

Kila uhusiano ambao kiigaji kinatumia, pamoja na chanzo chake. Viwango vilivyowekwa alama kama dhana ni urekebishaji wa mfano.

Maombi hufuata mkunjo wa kila siku pamoja na usumbufu; idadi kwa dakika ni nasibu (Poisson, makadirio ya kawaida) na mlipuko kidogo.
λ(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]Dhana: idadi ya wafanyakazi, muda wa huduma, uwezo wa hifadhidata, ukubwa wa kache, kasi ya kujaza, bei na kiwango cha makosa cha ujenzi mbaya ni thamani za kielelezo kwa huduma ya wavuti ya ukubwa wa kati.
Erlang C: uwezekano kwamba ombi lazima lisubiri mfanyakazi huru katika mfumo wa M/M/N.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Mkia wa muda wa kusubiri: uwezekano wa kusubiri zaidi ya t hupungua kwa kasi ya kielelezo; maombi yanayosubiri bado kwenye muda wa kikomo wa s 2 hushindwa. Zaidi ya uwezo, ziada hushindwa.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
Ucheleweshaji wa p99 kutoka kwa kwantaili za muda wa huduma na muda wa kusubiri.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Makadirio: kujumlisha kwantili za huduma na kusubiri si p99 kamili ya jumla yao (inaweza kuwa juu au chini kidogo); foleni inachukuliwa kuwa tulivu ndani ya kila dakika kwa sababu maombi huchukua milisekunde.
Sheria ya Little: wafanyakazi wenye shughuli = kiwango cha kuwasili × muda wa huduma.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
Kache ya TTL: kwa maombi ya nasibu, kila kukosa huanza kipindi cha TTL ambapo maombi hupata.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Kukosa kwa kache hupakia hifadhidata; ucheleweshaji wake wa foleni hupunguza kasi ya kila ombi linaloigusa, jambo ambalo pia hujaza wafanyakazi wa programu.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Dhana: idadi ya wafanyakazi, muda wa huduma, uwezo wa hifadhidata, ukubwa wa kache, kasi ya kujaza, bei na kiwango cha makosa cha ujenzi mbaya ni thamani za kielelezo kwa huduma ya wavuti ya ukubwa wa kati.
SLO na bajeti ya makosa: kiwango cha kuchoma kinasema bajeti inatumika mara ngapi kwa kasi zaidi ya inavyoruhusiwa.
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]
Kiongeza uwezo kiotomatiki chenye kufuatilia lengo, chenye ucheleweshaji wa kuwaka na muda wa kutulia.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Dhana: idadi ya wafanyakazi, muda wa huduma, uwezo wa hifadhidata, ukubwa wa kache, kasi ya kujaza, bei na kiwango cha makosa cha ujenzi mbaya ni thamani za kielelezo kwa huduma ya wavuti ya ukubwa wa kati.
Vigezo vingine vya uendeshaji vinavyotumiwa na 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 instancesDhana: idadi ya wafanyakazi, muda wa huduma, uwezo wa hifadhidata, ukubwa wa kache, kasi ya kujaza, bei na kiwango cha makosa cha ujenzi mbaya ni thamani za kielelezo kwa huduma ya wavuti ya ukubwa wa kati.

Nasibu: jenereta ya mulberry32 yenye mbegu; mgawanyo unaotumika — sawa, kielelezo (CDF kinyume), kawaida (Box–Muller), Poisson (Knuth). Mbegu inaonyeshwa na inaweza kushirikiwa.

Vyanzo

  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

Nani hufanya kazi hii kama taaluma

Modeli ya kielimu — si kwa maamuzi ya uendeshaji. Vituo halisi hurekebisha kila kiwango kulingana na vifaa na data zao.