Амалиёти IT — боэътимодии сайт Модели зинда

Шумо барои хидмати вебӣ навбатчӣ ҳастед: тақсимкунандаи бор дар пеши парки нусхаҳо, кэш дар пеши пойгоҳи додаҳо ва ҳадафи дастрасии 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]Фарзия: шумораи коргарҳо, вақти хизмат, иқтидори пойгоҳи додаҳо, андозаи кэш, суръати пуркунӣ, нархҳо ва басомади хатои нусхаи бад қиматҳои намунавӣ барои хидмати вебии миёна мебошанд.
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 сония ҳанӯз интизоранд, ноком мешаванд. Аз иқтидор болотар, зиёдатӣ ноком мешавад.
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

Кӣ ин корро касбан мекунад

Модели таълимӣ — барои қарорҳои амалиётӣ нест. Объектҳои воқеӣ ҳар собитро ба таҷҳизот ва додаҳои худ мутобиқ мекунанд.