ИТ операциялары — сайттын ишенимдүүлүгү Тирүү модель

Сиз веб-кызмат боюнча кезекчисиз: даналар паркынын алдындагы жүктөм теңдегич, маалымат базасынын алдындагы кэш жана 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

Муну кесип катары кимдер аткарат

Окуу модели — операциялык чечимдер үчүн эмес. Чыныгы объекттер ар бир туруктуу өз жабдуусуна жана маалыматтарына калибрлейт.