ІТ операциялары — сайттың сенімділігі Тірі модель

Сіз веб-қызмет бойынша кезекшісіз: даналар паркінің алдындағы жүктеме теңестіргіш, дерекқордың алдындағы кэш және 99,9 % қолжетімділік мақсаты. Модель әр минут сайын оқулық формулаларынан кезек кідірісін, күту шегін, кэш табуларын және дерекқор жүктемесін, сондай-ақ шешімдеріңіздің бағасын есептейді.

Нені үйренесіз

Симулятор

Уақыт 0 мин
Сұраулар 1125 · Қате үлесі 0,00% · p99 кідірісі 342 ms · Қызмет көрсетіп жатқан даналар 10 (+0) · Кэш табу үлесі 77% · Дерекқорды пайдалану 19% · Қалған қателер бюджеті (30 күн) 50,0%⇉1125 сұраным/с▶▶▶▶▶▶▶▶▶▶······························▶ 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 дерекқор сұрауы/с бағасына.

Жүктеме теңестіргіште «кейін қайталаңыз» деп қабылданбайтын төмен басымдықты 30 %-дың (алдын ала жүктеу, пакеттік өңдеу, роботтар) үлесі.

Ауыр мүмкіндік әр сұрауға 20 мс CPU және бір дерекқор сұрауын қосады. Өшірулі = жұмсақ деградация.

Соңғы жақсы құрастыруды жаңа серверлер паркінде қайта орналастырады (5 мин, екі есе төленеді), содан кейін трафикті ауыстырады. Қайта басу дайындықты басынан бастайды; жаман құрастыру жұмыс істемей тұрса, тек ақшаға түседі.

Көрсеткіштер

Қате үлесі
0,00%
қалыпты
p99 кідірісі
342ms
қалыпты
Қалған қателер бюджеті (30 күн)
50,0%
қалыпты
Парктің пайдаланылуы
52%
қалыпты
Жану жылдамдығы (1 сағ)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 мс
  • Орташа жеңілдетілген трафик ≤ 5 %
  • Жалпы шығын ≤ $21
  • Ұсыныстар уақыттың ≥ 85 %-ында қолжетімді

3-деңгей · Суық кэш

Түскі шыңда қызмет көрсету скрипті бүкіл кэшті тазалайды. Енді әр сұрау әдеттегі 85 % табу үлесіне есептелген дерекқорға барады. Дерекқорды шамадан тыс жүктемей, қызметті қалпына келтіріңіз.

  • Орташа қате үлесі ≤ 1,5 %
  • Бірінші минуттан кейін дерекқорды пайдалану ешқашан 90 %-дан жоғары емес
  • Кэштелген жауаптардың орташа жасы орта есеппен ≤ 90 с
  • Жалпы шығын ≤ $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]Жорамал: жұмысшылар саны, қызмет көрсету уақыттары, дерекқор сыйымдылығы, кэш көлемі, толтыру жылдамдығы, бағалар және нашар жинақтың қате үлесі орта өлшемді веб-қызмет үшін иллюстрациялық мәндер.
Эрланг 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 с күту шегінде әлі күтіп тұрған сұраулар сәтсіз болады. Сыйымдылықтан асқанда артығы сәтсіз болады.
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Жорамал: жұмысшылар саны, қызмет көрсету уақыттары, дерекқор сыйымдылығы, кэш көлемі, толтыру жылдамдығы, бағалар және нашар жинақтың қате үлесі орта өлшемді веб-қызмет үшін иллюстрациялық мәндер.

Кездейсоқтық: seed бар mulberry32 генераторы; қолданылатын үлестірімдер — біркелкі, экспоненциалды (кері CDF), қалыпты (Box–Muller), Пуассон (Knuth). Seed көрсетіледі және оны бөлісуге болады.

Дереккөздер

  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

Мұнымен кәсіби түрде кімдер айналысады

Оқу моделі — операциялық шешімдер үшін емес. Нақты нысандар әр тұрақтыны өз жабдығы мен деректеріне калибрлейді.