IT operatsiyalari — saytning ishonchliligi Jonli model

Siz veb-xizmat uchun navbatchisiz (on-call): nusxalar parki oldida yuk balanslagich, ma’lumotlar bazasi oldida kesh va 99,9 % mavjudlik maqsadi. Har daqiqa model navbat kechikishi, timeoutlar, kesh urishlari va ma’lumotlar bazasi yuklamasini darslik formulalaridan hisoblaydi — va qarorlaringiz qancha turishini.

Nimani o‘rganasiz

Simulyator

Vaqt 0 daq
So‘rovlar 1125 · Xato ulushi 0,00% · p99 kechikish 342 ms · Xizmat ko‘rsatayotgan nusxalar 10 (+0) · Kesh urish ulushi 77% · Ma’lumotlar bazasi bandligi 19% · Qolgan xato byudjeti (30 kun) 50,0%⇉1125 so‘rov/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msPark bandligi 52%Kesh urish ulushi 77%Ma’lumotlar bazasi bandligi 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • Xizmat ko‘rsatayotgan nusxa
  • Yuklanayotgan nusxa
  • Yomon builddagi nusxa
  • Bo‘sh joy
  • Kiruvchi so‘rovlar

Boshqaruvlar

Park uchun quyi chegara. Uni oshirish nusxalarni darhol ishga tushiradi — ular xizmat ko‘rsatishdan oldin baribir yuklanish kechikishini talab qiladi.

Bandlik bo‘yicha maqsadni kuzatish; nusxalar hali yuklanayotganda yangi kengaytirish yo‘q. O‘chiq = aynan minimum.

Pastroq = ko‘proq zaxira va ko‘proq xarajat. O‘lchangan bandlik 100 % dan oshmaydi, shuning uchun to‘yingan park faqat bosqichma-bosqich o‘sadi.

Uzunroq TTL = ko‘proq urishlar, lekin javoblar eskiroq bo‘lishi mumkin (o‘rtacha yosh ≈ TTL/2).

6 daqiqa davomida issiq kalitlarni yuklaydi (daqiqada keshning +12 %) qo‘shimcha 600 ma’lumotlar bazasi so‘rovi/s evaziga.

Past ustuvorlikdagi 30 % (oldindan yuklash, paketli, kraulerlar) ning yuk balanslagichda "keyinroq urinib ko‘ring" bilan rad etiladigan ulushi.

Og‘ir funksiya har bir so‘rovga 20 ms CPU va bitta ma’lumotlar bazasi so‘rovini qo‘shadi. O‘chiq = silliq pasayish.

Oxirgi yaxshi buildni yangi flotda qayta joylashtiradi (5 daqiqa, ikki marta hisoblanadi), so‘ng trafikni almashtiradi. Qayta bosish tayyorgarlikni qaytadan boshlaydi; yomon build ishlamayotgan bo‘lsa, faqat pul sarflanadi.

Ko‘rsatkichlar

Xato ulushi
0,00%
normal
p99 kechikish
342ms
normal
Qolgan xato byudjeti (30 kun)
50,0%
normal
Park bandligi
52%
normal
Yonish tezligi (1 h)0,0 ×
So‘rovlar1125 req/s
Xizmat ko‘rsatayotgan nusxalar10
Yuklanayotgan nusxalar0
Kesh urish ulushi77 %
Ma’lumotlar bazasi bandligi19 %
To‘xtatilgan trafik0 %
Park xarajati4,00 $/h
Hozirgacha xarajat0,00 $
Keshdagi javoblarning o‘rtacha yoshi30 s
Yomon builddagi trafik0 %
Tavsiyalar mavjud100 %

Tendensiya

Xato ulushi: — %20,000,00

Inqiroz ssenariylari

1-daraja · Yomon reliz

09:10 da yangi build chiqariladi. Oy allaqachon og‘ir o‘tgan: xato byudjetining faqat 20 % i qolgan. Deploydan bir necha daqiqa keyin yonish tezligi signali chaladi. Byudjetni asrang.

  • Oxirida qolgan xato byudjeti ≥ 18,5 %
  • Deploydan keyin o‘rtacha xato ulushi ≤ 0,65 %
  • Park xarajati ≤ $9,50

2-daraja · To‘satdan olomon

Xizmatga havola tez tarqalmoqda va bugun ertalab biror vaqtda trafik oshishi kutilmoqda — qachon va qanchalik kattaligini hech kim bilmaydi. Yangi instance larning ishga tushishi hozir 8 daqiqa oladi. U kelganda, ishlamay turgan quvvatga pul sarflamasdan, xatolar va kechikishni past ushlang.

  • O‘rtacha xato ulushi ≤ 0,2 %
  • O‘rtacha p99 kechikish ≤ 400 ms
  • O‘rtacha to‘xtatilgan trafik ≤ 5 %
  • Umumiy xarajat ≤ $21
  • Tavsiyalar vaqtning ≥ 85 % ida mavjud

3-daraja · Sovuq kesh

Tush cho‘qqisida ta’mirlash skripti butun keshni tozalaydi. Endi har bir so‘rov odatdagi 85 % urish ulushiga mo‘ljallangan ma’lumotlar bazasiga boradi. Ma’lumotlar bazasini ortiqcha yuklamasdan xizmatni tiklang.

  • O‘rtacha xato ulushi ≤ 1,5 %
  • Birinchi daqiqadan keyin ma’lumotlar bazasi bandligi hech qachon 90 % dan yuqori emas
  • Keshdagi javoblarning o‘rtacha yoshi o‘rtacha ≤ 90 s
  • Umumiy xarajat ≤ $9
  • Tavsiyalar vaqtning ≥ 80 % ida mavjud
  • O‘rtacha to‘xtatilgan trafik ≤ 5 %

Asos — raqamlar ortidagi model

Simulyator ishlatadigan har bir bog‘lanish, manbasi bilan. Taxmin deb belgilangan doimiylar misol kalibrlashlardir.

So‘rovlar kunlik egri chiziq va buzilishlarga amal qiladi; daqiqadagi soni tasodifiy (Puasson, normal yaqinlashuv) ozgina portlovchanlik bilan.
λ(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]Taxmin: ishchilar soni, xizmat vaqtlari, ma’lumotlar bazasi sig‘imi, kesh o‘lchami, to‘ldirish tezligi, narxlar va yomon buildning xato ulushi o‘rta veb-xizmat uchun ko‘rgazmali qiymatlar.
Erlang C: M/M/N tizimida so‘rov bo‘sh ishchini kutishi ehtimoli.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Kutish vaqti dumi: t dan uzoqroq kutish ehtimoli eksponensial kamayadi; 2 s timeoutda hali kutayotgan so‘rovlar muvaffaqiyatsiz bo‘ladi. Sig‘imdan oshganda ortig‘i muvaffaqiyatsiz bo‘ladi.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
Xizmat vaqti va kutish vaqti kvantillaridan p99 kechikish.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Yaqinlashtirish: xizmat va kutish kvantillarini qo‘shish ularning yig‘indisining aniq p99 i emas (u biroz yuqori yoki past bo‘lishi mumkin); so‘rovlar millisekundlarda bajarilgani uchun navbat har daqiqa ichida barqaror deb olinadi.
Little qonuni: band ishchilar = kelish tezligi × xizmat vaqti.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL kesh: tasodifiy so‘rovlar bilan har bir o‘tkazib yuborish TTL davrini boshlaydi, bu davrda so‘rovlar uradi.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Kesh o‘tkazib yuborishlari ma’lumotlar bazasini yuklaydi; uning navbat kechikishi unga tegadigan har bir so‘rovni sekinlashtiradi, bu esa ilova ishchilarini ham to‘ldiradi.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Taxmin: ishchilar soni, xizmat vaqtlari, ma’lumotlar bazasi sig‘imi, kesh o‘lchami, to‘ldirish tezligi, narxlar va yomon buildning xato ulushi o‘rta veb-xizmat uchun ko‘rgazmali qiymatlar.
SLO va xato byudjeti: yonish tezligi byudjet ruxsat etilganidan necha marta tezroq sarflanayotganini ko‘rsatadi.
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]
Yuklanish kechikishi va sovish davri bilan maqsadni kuzatuvchi avtomatik masshtablagich.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Taxmin: ishchilar soni, xizmat vaqtlari, ma’lumotlar bazasi sig‘imi, kesh o‘lchami, to‘ldirish tezligi, narxlar va yomon buildning xato ulushi o‘rta veb-xizmat uchun ko‘rgazmali qiymatlar.
Model ishlatadigan boshqa ish doimiylari.
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 instancesTaxmin: ishchilar soni, xizmat vaqtlari, ma’lumotlar bazasi sig‘imi, kesh o‘lchami, to‘ldirish tezligi, narxlar va yomon buildning xato ulushi o‘rta veb-xizmat uchun ko‘rgazmali qiymatlar.

Tasodifiylik: seedli mulberry32 generatori; ishlatilgan taqsimotlar — tekis, eksponensial (teskari CDF), normal (Box–Muller), Puasson (Knuth). Seed ko‘rsatiladi va ulashiladi.

Manbalar

  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

Buni kasb sifatida kim qiladi

Ta’limiy model — operatsion qarorlar uchun emas. Haqiqiy obyektlar har bir doimiyni o‘z jihozi va ma’lumotlariga moslab kalibrlaydi.