Gudanar da IT — amincin sabis Samfurin kai-tsaye

Kuna kan kira don sabis na yanar gizo: load balancer a gaban rundunar na'urori, cache a gaban database, da manufar samuwa ta 99.9 %. Kowane minti samfurin yana lissafin jinkirin layi, ƙarewar lokaci, cache hits da nauyin database daga dabaru na littafin karatu — da abin da shawarwarinku ke kashewa.

Abin da za ka koya

Na'urar koyi

Lokaci 0 min
Buƙatu 1125 · Ƙimar kuskure 0.00% · Jinkirin p99 342 ms · Na'urori masu yin hidima 10 (+0) · Ƙimar cache hit 77% · Amfani da database 19% · Kasafin kuskure da ya rage (kwana 30) 50.0%⇉1125 buƙata/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msAmfani da rundunar na'urori 52%Ƙimar cache hit 77%Amfani da database 19%⚠ 0.00% · 🔥 0.0×50%$ 4.00/h · Σ $0.00
  • Na'ura tana hidima
  • Na'ura tana tashi
  • Na'ura a kan mummunan gini
  • Wuri babu kowa
  • Buƙatun da ke shigowa

Sarrafawa

Ƙasan rundunar na'urori. Ɗaga shi yana ƙaddamar da na'urori nan take — har yanzu suna buƙatar jinkirin tashi kafin su yi hidima.

Bin manufa a kan amfani; babu sabon ƙara waje yayin da na'urori har yanzu suna tashi. A kashe = daidai mafi ƙaranci.

Ƙasa = ƙarin fili da ƙarin kuɗi. Amfani da aka auna ba zai iya wuce 100 % ba, don haka rundunar da ta cika tana girma mataki-mataki kawai.

TTL mai tsawo = ƙarin hits, amma amsoshi na iya zama tsofaffi (matsakaicin shekaru ≈ TTL/2).

Yana loda maɓallan masu zafi tsawon mintuna 6 (+12 % na cache a minti) a farashin tambayoyin database 600 na ƙari a daƙiƙa.

Kason 30 % mai ƙarancin fifiko (prefetch, batch, crawlers) da aka ƙi a load balancer da "a sake gwadawa daga baya".

Fasali mai nauyi yana ƙara 20 ms na CPU da tambayar database ɗaya ga kowace buƙata. A kashe = raguwa mai laushi.

Yana sake tura ginin ƙarshe mai kyau a sabon rukunin na'urori (mintuna 5, ana biyan kuɗi sau biyu), sannan ya canja zirga-zirga. Danna sau biyu yana sake fara shiri; idan babu mummunan gini mai aiki, kuɗi kawai yake kashewa.

Alamomi

Ƙimar kuskure
0.00%
daidai
Jinkirin p99
342ms
daidai
Kasafin kuskure da ya rage (kwana 30)
50.0%
daidai
Amfani da rundunar na'urori
52%
daidai
Ƙimar ƙonewa (awa 1)0.0 ×
Buƙatu1125 req/s
Na'urori masu yin hidima10
Na'urori masu tashi0
Ƙimar cache hit77 %
Amfani da database19 %
Zirga-zirgar da aka zubar0 %
Kuɗin runduna4.00 $/h
Kuɗin da aka kashe zuwa yanzu0.00 $
Matsakaicin shekarun amsoshin da aka ajiye a cache30 s
Zirga-zirga a mummunan ginin0 %
Shawarwari da ake da su100 %

Yanayi

Ƙimar kuskure: — %20.000.00

Yanayin rikici

Mataki 1 · Mummunan fitowa

Sabon gini ya fito a 09:10. Watan ya riga ya yi wahala: kashi 20 % kawai na kasafin kuskure ya rage. Mintuna bayan turawa faɗakarwar ƙimar ƙonewa tana ƙara. Ku kare kasafin.

  • Kasafin kuskure da ya rage a ƙarshe ≥ 18.5 %
  • Matsakaicin ƙimar kuskure ≤ 0.65 % bayan turawa
  • Kuɗin runduna ≤ $9.50

Mataki 2 · Taron kwatsam

Wata hanyar haɗi zuwa sabis ɗin tana yaɗuwa da sauri kuma ana tsammanin tsalle na zirga-zirga wani lokaci a safiyar nan — babu wanda ya san lokacin, ko girmansa. Sababbin na'urori suna buƙatar minti 8 don farawa a yau. Idan ya zo, riƙe kurakurai da jinkiri ƙasa ba tare da ƙona kuɗi kan ƙarfin da ba a amfani da shi ba.

  • Matsakaicin ƙimar kuskure ≤ 0.2 %
  • Matsakaicin jinkirin p99 ≤ 400 ms
  • Matsakaicin zirga-zirgar da aka zubar ≤ 5 %
  • Jimillar kuɗi ≤ $21
  • Shawarwari suna samuwa ≥ 85 % na lokaci

Mataki 3 · Cache mai sanyi

A kololuwar rana rubutun gyara ya share dukan cache. Yanzu kowace buƙata tana tafiya zuwa database, wanda aka auna shi don ƙimar hit ta yau da kullum ta 85 %. Ku dawo da sabis ba tare da ɗora wa database nauyi fiye da kima ba.

  • Matsakaicin ƙimar kuskure ≤ 1.5 %
  • Amfani da database bai taɓa wuce 90 % ba bayan minti na farko
  • Matsakaicin shekarun amsoshin da aka ajiye a cache ≤ 90 s a matsakaici
  • Jimillar kuɗi ≤ $9
  • Shawarwari suna samuwa ≥ 80 % na lokaci
  • Matsakaicin zirga-zirgar da aka zubar ≤ 5 %

Tushe — samfurin da ke bayan lambobin

Kowace alaƙa da na'urar koyi ke amfani da ita, tare da tushenta. Ƙayyadaddun ƙimomin da aka yi wa alama a matsayin zato daidaitawa ne na misali.

Buƙatu suna bin lanƙwasar yini tare da tarnaƙi; ƙirgar a minti bazuwar ce (Poisson, kimantawa ta al'ada) tare da ɗan tsiwa.
λ(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]Zato: yawan workers, lokutan hidima, ƙarfin database, girman cache, saurin cikawa, farashi da ƙimar kuskuren mummunan ginin ƙimomi ne na misali don matsakaicin sabis na yanar gizo.
Erlang C: yiwuwar da buƙata za ta jira worker mara aiki a tsarin M/M/N.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Wutsiyar lokacin jira: yiwuwar jira fiye da t tana raguwa bisa ƙa'idar exponential; buƙatun da har yanzu suke jira a lokacin ƙarewar 2-s suna kasawa. Fiye da ƙarfi, abin da ya wuce yana kasawa.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
Jinkirin p99 daga quantiles na lokacin hidima da lokacin jira.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Kimantawa: jimlar quantile na hidima da jira ba ainihin p99 na jimlarsu ba ne (yana iya zama ɗan sama ko ƙasa); ana ɗaukar jerin gwano a matsayin mai tsayayye a cikin kowane minti saboda buƙatu suna ɗaukar millisecond.
Dokar Little: workers masu aiki = yawan zuwa × lokaci a hidima.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
Cache na TTL: tare da buƙatu bazuwar, kowace kuskure tana fara lokacin TTL da buƙatu ke samun hits a cikinsa.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Kuskuren cache yana ɗora wa database nauyi; jinkirin layinsa yana rage saurin kowace buƙata da ta taɓa shi, wanda kuma yake cika workers na app.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Zato: yawan workers, lokutan hidima, ƙarfin database, girman cache, saurin cikawa, farashi da ƙimar kuskuren mummunan ginin ƙimomi ne na misali don matsakaicin sabis na yanar gizo.
SLO da kasafin kuskure: ƙimar ƙonewa tana nuna sau nawa da sauri fiye da abin da aka yarda ake kashe kasafin.
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]
Mai ƙara ƙarfi ta atomatik mai bin manufa tare da jinkirin tashi da lokacin sanyaya.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Zato: yawan workers, lokutan hidima, ƙarfin database, girman cache, saurin cikawa, farashi da ƙimar kuskuren mummunan ginin ƙimomi ne na misali don matsakaicin sabis na yanar gizo.
Sauran ƙayyadaddun ƙimomin aiki da samfurin ke amfani da su.
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 instancesZato: yawan workers, lokutan hidima, ƙarfin database, girman cache, saurin cikawa, farashi da ƙimar kuskuren mummunan ginin ƙimomi ne na misali don matsakaicin sabis na yanar gizo.

Rashin tsari: mai samar da mulberry32 mai iri; rarrabawar da aka yi amfani da su — uniform, exponential (inverse CDF), normal (Box–Muller), Poisson (Knuth). Ana nuna iri kuma ana iya raba shi.

Tushe

  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ɗanda ke yin wannan a matsayin sana'a

Samfurin ilimi — ba don yanke shawarar aiki ba. Wuraren gaske suna daidaita kowace ƙayyadaddiyar ƙima da kayan aiki da bayanansu.