ИТ операции — сигурност на услуги Модел во живо

Дежурни сте за веб-услуга: балансер на оптоварување пред флота од инстанци, кеш пред база на податоци и цел за достапност од 99,9 %. Секоја минута моделот пресметува задоцнување во редица, истекувања на време, погодоци во кешот и оптоварување на базата според формули од учебник — и колку чинат вашите одлуки.

Што ќе научите

Симулатор

Време 0 мин
Барања 1125 · Стапка на грешки 0,00% · p99 латенција 342 ms · Инстанци што служат 10 (+0) · Стапка на погодоци во кешот 77% · Искористеност на базата 19% · Преостанат буџет на грешки (30 дена) 50,0%⇉1125 бар./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 % (префетч, batch, роботи) што балансерот го одбива со „обидете се подоцна“.

Тешката функција додава 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

Кој го работи ова професионално

Едукативен модел — не за оперативни одлуки. Вистинските објекти секоја константа ја калибрираат според сопствената опрема и податоци.