ഐടി പ്രവർത്തനങ്ങൾ — സൈറ്റ് വിശ്വാസ്യത ലൈവ് മോഡൽ

നിങ്ങൾ ഒരു വെബ് സേവനത്തിന്റെ ഓൺ-കോളിലാണ്: ഇൻസ്റ്റൻസുകളുടെ ഫ്ലീറ്റിന് മുന്നിൽ ഒരു ലോഡ് ബാലൻസർ, ഡാറ്റാബേസിന് മുന്നിൽ ഒരു കാഷ്, 99.9 % ലഭ്യതാ ലക്ഷ്യം. ഓരോ മിനിറ്റിലും മോഡൽ പാഠപുസ്തക സൂത്രവാക്യങ്ങളിൽ നിന്ന് ക്യൂ കാലതാമസം, ടൈംഔട്ടുകൾ, കാഷ് ഹിറ്റുകൾ, ഡാറ്റാബേസ് ലോഡ് എന്നിവ കണക്കാക്കുന്നു — നിങ്ങളുടെ തീരുമാനങ്ങൾക്ക് എന്ത് ചെലവാകുമെന്നും.

നിങ്ങൾ എന്ത് പഠിക്കും

സിമുലേറ്റർ

സമയം 0 മിനി
അഭ്യർത്ഥനകൾ 1125 · പിശക് നിരക്ക് 0.00% · p99 ലേറ്റൻസി 342 ms · സേവനം നൽകുന്ന ഇൻസ്റ്റൻസുകൾ 10 (+0) · കാഷ് ഹിറ്റ് നിരക്ക് 77% · ഡാറ്റാബേസ് ഉപയോഗം 19% · ബാക്കിയുള്ള പിശക് ബജറ്റ് (30 ദിവസം) 50.0%⇉1125 req/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msഫ്ലീറ്റ് ഉപയോഗം 52%കാഷ് ഹിറ്റ് നിരക്ക് 77%ഡാറ്റാബേസ് ഉപയോഗം 19%⚠ 0.00% · 🔥 0.0×50%$ 4.00/h · Σ $0.00
  • ഇൻസ്റ്റൻസ് സേവനം നൽകുന്നു
  • ഇൻസ്റ്റൻസ് ബൂട്ട് ആകുന്നു
  • മോശം ബിൽഡിലെ ഇൻസ്റ്റൻസ്
  • ഒഴിഞ്ഞ സ്ലോട്ട്
  • വരുന്ന അഭ്യർത്ഥനകൾ

നിയന്ത്രണങ്ങൾ

ഫ്ലീറ്റിനുള്ള അടിത്തറ. ഉയർത്തിയാൽ ഇൻസ്റ്റൻസുകൾ ഉടൻ ആരംഭിക്കും — സേവനം നൽകുംമുമ്പ് അവയ്ക്ക് ബൂട്ട് കാലതാമസം വേണം.

ഉപയോഗത്തിലെ ടാർഗറ്റ് ട്രാക്കിംഗ്; ഇൻസ്റ്റൻസുകൾ ഇപ്പോഴും ബൂട്ട് ആകുമ്പോൾ പുതിയ സ്കെയിൽ-ഔട്ട് ഇല്ല. ഓഫ് = കൃത്യം മിനിമം.

കുറവ് = കൂടുതൽ ഇടവും കൂടുതൽ ചെലവും. അളന്ന ഉപയോഗം 100 % കവിയാൻ കഴിയില്ല, അതിനാൽ പൂരിത ഫ്ലീറ്റ് പടിപടിയായി മാത്രം വളരുന്നു.

ദൈർഘ്യമേറിയ TTL = കൂടുതൽ ഹിറ്റുകൾ, പക്ഷേ ഉത്തരങ്ങൾ പഴയതാകാം (ശരാശരി പ്രായം ≈ TTL/2).

6 മിനിറ്റ് ഹോട്ട് കീകൾ ലോഡ് ചെയ്യുന്നു (മിനിറ്റിൽ കാഷിന്റെ +12 %), 600 അധിക ഡാറ്റാബേസ് ക്വറികൾ/s വിലയിൽ.

“പിന്നീട് ശ്രമിക്കുക” എന്ന് ലോഡ് ബാലൻസറിൽ നിരസിക്കുന്ന കുറഞ്ഞ മുൻഗണനയുള്ള 30 % ന്റെ (പ്രീഫെച്ച്, ബാച്ച്, ക്രോളറുകൾ) വിഹിതം.

കനത്ത ഫീച്ചർ ഓരോ അഭ്യർത്ഥനയ്ക്കും 20 ms CPU യും ഒരു ഡാറ്റാബേസ് ക്വറിയും ചേർക്കുന്നു. ഓഫ് = സൗമ്യമായ തരംതാഴ്ത്തൽ.

അവസാനത്തെ നല്ല ബിൽഡ് പുതിയ ഫ്ലീറ്റിൽ വീണ്ടും ഡിപ്ലോയ് ചെയ്യുന്നു (5 min, രണ്ടുതവണ ബിൽ ചെയ്യും), പിന്നെ ട്രാഫിക് മാറ്റുന്നു. വീണ്ടും അമർത്തിയാൽ തയ്യാറെടുപ്പ് വീണ്ടും തുടങ്ങും; മോശം ബിൽഡ് ലൈവ് ഇല്ലെങ്കിൽ അത് പണച്ചെലവ് മാത്രം.

സൂചകങ്ങൾ

പിശക് നിരക്ക്
0.00%
സാധാരണം
p99 ലേറ്റൻസി
342ms
സാധാരണം
ബാക്കിയുള്ള പിശക് ബജറ്റ് (30 ദിവസം)
50.0%
സാധാരണം
ഫ്ലീറ്റ് ഉപയോഗം
52%
സാധാരണം
ബേൺ റേറ്റ് (1 h)0.0 ×
അഭ്യർത്ഥനകൾ1125 req/s
സേവനം നൽകുന്ന ഇൻസ്റ്റൻസുകൾ10
ബൂട്ട് ആകുന്ന ഇൻസ്റ്റൻസുകൾ0
കാഷ് ഹിറ്റ് നിരക്ക്77 %
ഡാറ്റാബേസ് ഉപയോഗം19 %
ഒഴിവാക്കിയ ട്രാഫിക്0 %
ഫ്ലീറ്റ് ചെലവ്4.00 $/h
ഇതുവരെയുള്ള ചെലവ്0.00 $
കാഷ് ചെയ്ത ഉത്തരങ്ങളുടെ ശരാശരി പ്രായം30 s
മോശം ബിൽഡിലെ ട്രാഫിക്0 %
ശുപാർശകൾ ലഭ്യം100 %

പ്രവണത

പിശക് നിരക്ക്: — %20.000.00

പ്രതിസന്ധി സാഹചര്യങ്ങൾ

ലെവൽ 1 · മോശം റിലീസ്

09:10 ന് ഒരു പുതിയ ബിൽഡ് പുറത്തിറങ്ങുന്നു. മാസം ഇതിനകം കഠിനമായിരുന്നു: പിശക് ബജറ്റിന്റെ 20 % മാത്രമേ ബാക്കിയുള്ളൂ. ഡിപ്ലോയ് കഴിഞ്ഞ് മിനിറ്റുകൾക്കകം ബേൺ-റേറ്റ് പേജ് മുഴങ്ങുന്നു. ബജറ്റ് സംരക്ഷിക്കുക.

  • അവസാനം ബാക്കിയുള്ള പിശക് ബജറ്റ് ≥ 18.5 %
  • ഡിപ്ലോയ്ക്ക് ശേഷം ശരാശരി പിശക് നിരക്ക് ≤ 0.65 %
  • ഫ്ലീറ്റ് ചെലവ് ≤ $9.50

ലെവൽ 2 · പെട്ടെന്നുള്ള ജനത്തിരക്ക്

സേവനത്തിലേക്കുള്ള ഒരു ലിങ്ക് വേഗത്തിൽ പടരുന്നു, ഇന്ന് രാവിലെ എപ്പോഴെങ്കിലും ഒരു ട്രാഫിക് കുതിപ്പ് പ്രതീക്ഷിക്കുന്നു — എപ്പോൾ എന്നോ എത്ര വലുതെന്നോ ആർക്കും അറിയില്ല. പുതിയ ഇൻസ്റ്റൻസുകൾക്ക് ഇന്ന് ആരംഭിക്കാൻ 8 മിനിറ്റ് വേണം. അത് വരുമ്പോൾ, ഉപയോഗിക്കാത്ത ശേഷിക്ക് പണം പാഴാക്കാതെ പിശകുകളും ലേറ്റൻസിയും കുറച്ച് നിലനിർത്തുക.

  • ശരാശരി പിശക് നിരക്ക് ≤ 0.2 %
  • ശരാശരി p99 ലേറ്റൻസി ≤ 400 ms
  • ശരാശരി ഒഴിവാക്കിയ ട്രാഫിക് ≤ 5 %
  • ആകെ ചെലവ് ≤ $21
  • ശുപാർശകൾ ≥ 85 % സമയം ലഭ്യം

ലെവൽ 3 · തണുത്ത കാഷ്

ഉച്ചയ്ക്കത്തെ ഉച്ചസ്ഥായിയിൽ ഒരു മെയിന്റനൻസ് സ്ക്രിപ്റ്റ് മുഴുവൻ കാഷും ഫ്ലഷ് ചെയ്യുന്നു. ഇപ്പോൾ ഓരോ അഭ്യർത്ഥനയും സാധാരണ 85 % ഹിറ്റ് നിരക്കിന് രൂപകൽപ്പന ചെയ്ത ഡാറ്റാബേസിലേക്ക് പോകുന്നു. ഡാറ്റാബേസ് ഓവർലോഡ് ആക്കാതെ സേവനം തിരികെ കൊണ്ടുവരിക.

  • ശരാശരി പിശക് നിരക്ക് ≤ 1.5 %
  • ആദ്യ മിനിറ്റിന് ശേഷം ഡാറ്റാബേസ് ഉപയോഗം ഒരിക്കലും 90 % ന് മുകളിലല്ല
  • കാഷ് ചെയ്ത ഉത്തരങ്ങളുടെ ശരാശരി പ്രായം ≤ 90 s ശരാശരിയിൽ
  • ആകെ ചെലവ് ≤ $9
  • ശുപാർശകൾ ≥ 80 % സമയം ലഭ്യം
  • ശരാശരി ഒഴിവാക്കിയ ട്രാഫിക് ≤ 5 %

അടിസ്ഥാനം — സംഖ്യകൾക്ക് പിന്നിലെ മോഡൽ

സിമുലേറ്റർ ഉപയോഗിക്കുന്ന ഓരോ ബന്ധവും അതിന്റെ ഉറവിടം സഹിതം. അനുമാനങ്ങളായി അടയാളപ്പെടുത്തിയ സ്ഥിരാങ്കങ്ങൾ ഉദാഹരണത്തിനുള്ള കാലിബ്രേഷനുകളാണ്.

അഭ്യർത്ഥനകൾ ദിവസേനയുള്ള വക്രവും തടസ്സങ്ങളും പിന്തുടരുന്നു; മിനിറ്റിലെ എണ്ണം ക്രമരഹിതമാണ് (പോയിസൺ, നോർമൽ ഏകദേശം) അല്പം ബഴ്സ്റ്റിനെസ്സോടെ.
λ(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]അനുമാനം: വർക്കർ എണ്ണം, സേവന സമയങ്ങൾ, ഡാറ്റാബേസ് ശേഷി, കാഷ് വലിപ്പം, റീഫിൽ വേഗത, വിലകൾ, മോശം ബിൽഡിന്റെ പിശക് നിരക്ക് എന്നിവ ഇടത്തരം വെബ് സേവനത്തിനുള്ള ഉദാഹരണ മൂല്യങ്ങളാണ്.
Erlang C: M/M/N സിസ്റ്റത്തിൽ ഒരു അഭ്യർത്ഥന സ്വതന്ത്ര വർക്കറെ കാത്തിരിക്കേണ്ടി വരാനുള്ള സാധ്യത.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
കാത്തിരിപ്പ് സമയത്തിന്റെ വാൽ: t നെക്കാൾ കൂടുതൽ കാത്തിരിക്കാനുള്ള സാധ്യത എക്സ്പോണൻഷ്യലായി കുറയുന്നു; 2-s ടൈംഔട്ടിൽ ഇപ്പോഴും കാത്തിരിക്കുന്ന അഭ്യർത്ഥനകൾ പരാജയപ്പെടുന്നു. ശേഷിക്ക് അപ്പുറം, അധികം പരാജയപ്പെടുന്നു.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
സേവന സമയത്തിന്റെയും കാത്തിരിപ്പ് സമയത്തിന്റെയും ക്വാണ്ടൈലുകളിൽ നിന്നുള്ള p99 ലേറ്റൻസി.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]ഏകദേശ കണക്ക്: സേവന, കാത്തിരിപ്പ് ക്വാണ്ടൈലുകൾ കൂട്ടുന്നത് അവയുടെ തുകയുടെ കൃത്യമായ p99 അല്ല (അൽപ്പം കൂടുതലോ കുറവോ ആകാം); അഭ്യർത്ഥനകൾ മില്ലിസെക്കൻഡുകൾ എടുക്കുന്നതിനാൽ ഓരോ മിനിറ്റിലും ക്യൂ സ്ഥിരമായി കണക്കാക്കുന്നു.
ലിറ്റിൽ നിയമം: തിരക്കുള്ള വർക്കർമാർ = വരവ് നിരക്ക് × സേവനത്തിലെ സമയം.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL കാഷ്: ക്രമരഹിത അഭ്യർത്ഥനകളിൽ ഓരോ മിസ്സും ഒരു TTL കാലയളവ് ആരംഭിക്കുന്നു, ആ സമയത്ത് അഭ്യർത്ഥനകൾ ഹിറ്റാകുന്നു.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
കാഷ് മിസ്സുകൾ ഡാറ്റാബേസിനെ ലോഡ് ചെയ്യുന്നു; അതിന്റെ ക്യൂ കാലതാമസം അതിനെ സ്പർശിക്കുന്ന ഓരോ അഭ്യർത്ഥനയെയും മന്ദഗതിയിലാക്കുന്നു, ഇത് ആപ്പ് വർക്കർമാരെയും നിറയ്ക്കുന്നു.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]അനുമാനം: വർക്കർ എണ്ണം, സേവന സമയങ്ങൾ, ഡാറ്റാബേസ് ശേഷി, കാഷ് വലിപ്പം, റീഫിൽ വേഗത, വിലകൾ, മോശം ബിൽഡിന്റെ പിശക് നിരക്ക് എന്നിവ ഇടത്തരം വെബ് സേവനത്തിനുള്ള ഉദാഹരണ മൂല്യങ്ങളാണ്.
SLO ഉം പിശക് ബജറ്റും: അനുവദിച്ചതിനെക്കാൾ എത്ര മടങ്ങ് വേഗത്തിൽ ബജറ്റ് ചെലവഴിക്കപ്പെടുന്നു എന്ന് ബേൺ റേറ്റ് പറയുന്നു.
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]
ബൂട്ട് കാലതാമസവും കൂൾഡൗണും ഉള്ള ടാർഗറ്റ്-ട്രാക്കിംഗ് ഓട്ടോസ്കെയിലർ.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]അനുമാനം: വർക്കർ എണ്ണം, സേവന സമയങ്ങൾ, ഡാറ്റാബേസ് ശേഷി, കാഷ് വലിപ്പം, റീഫിൽ വേഗത, വിലകൾ, മോശം ബിൽഡിന്റെ പിശക് നിരക്ക് എന്നിവ ഇടത്തരം വെബ് സേവനത്തിനുള്ള ഉദാഹരണ മൂല്യങ്ങളാണ്.
മോഡൽ ഉപയോഗിക്കുന്ന മറ്റ് പ്രവർത്തന സ്ഥിരാങ്കങ്ങൾ.
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 instancesഅനുമാനം: വർക്കർ എണ്ണം, സേവന സമയങ്ങൾ, ഡാറ്റാബേസ് ശേഷി, കാഷ് വലിപ്പം, റീഫിൽ വേഗത, വിലകൾ, മോശം ബിൽഡിന്റെ പിശക് നിരക്ക് എന്നിവ ഇടത്തരം വെബ് സേവനത്തിനുള്ള ഉദാഹരണ മൂല്യങ്ങളാണ്.

ക്രമരാഹിത്യം: സീഡ് ഉള്ള mulberry32 ജനറേറ്റർ; ഉപയോഗിക്കുന്ന വിതരണങ്ങൾ — യൂണിഫോം, എക്സ്പോണൻഷ്യൽ (ഇൻവേഴ്സ് CDF), നോർമൽ (Box–Muller), പോയിസൺ (Knuth). സീഡ് കാണിക്കുകയും പങ്കിടാൻ കഴിയുകയും ചെയ്യും.

ഉറവിടങ്ങൾ

  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

ഇത് ജീവിതമാർഗ്ഗമായി ചെയ്യുന്നത് ആരാണ്

വിദ്യാഭ്യാസ മോഡൽ — പ്രവർത്തന തീരുമാനങ്ങൾക്കുള്ളതല്ല. യഥാർത്ഥ സൈറ്റുകൾ ഓരോ സ്ഥിരാങ്കവും സ്വന്തം ഉപകരണങ്ങൾക്കും ഡാറ്റയ്ക്കും അനുസരിച്ച് കാലിബ്രേറ്റ് ചെയ്യുന്നു.