🖥️ İT əməliyyatları — saytın etibarlılığı Canlı model
Siz veb xidmət üçün növbətçisiniz: instansiyalar parkının qarşısında yük balanslaşdırıcı, verilənlər bazasının qarşısında keş və 99,9 % əlçatanlıq hədəfi. Hər dəqiqə model növbə gecikməsini, taymautları, keş müraciətlərini və verilənlər bazası yükünü dərslik düsturları ilə hesablayır — və qərarlarınızın nəyə başa gəldiyini.
Nə öyrənəcəksiniz
Gecikmə tam istifadə yaxınlığında niyə partlayır (Erlang C) və yüklənmə gecikməli avtomatik miqyaslama niyə həmişə gec çatır.
SLO-lar, xəta büdcələri və yanma sürəti xəbərdarlıqları geri qaytarmanın nə vaxt lazım olduğunu necə müəyyən edir.
Soyuq keş verilənlər bazasının dayanmasına necə çevrilir və hansı vasitələr vaxt qazandırır: atma, degradasiya, qızdırma.
Simulyator
Vaxt 0 dəq
▶İnstansiya xidmət edir
⚙İnstansiya yüklənir
!Pis buildə instansiya
·Boş yuva
•Daxil olan sorğular
İdarəetmə
Parkın aşağı həddi. Artırmaq instansiyaları dərhal işə salır — onlar yenə də xidmət etməzdən əvvəl yüklənmə gecikməsinə ehtiyac duyur.
İstifadə dərəcəsi üzrə hədəf izləmə; instansiyalar hələ yüklənərkən yeni genişlənmə yoxdur. Söndürülü: dəqiq minimum.
Aşağı = daha çox ehtiyat və daha çox xərc. Ölçülən istifadə 100 %-i keçə bilməz, ona görə doymuş park yalnız addım-addım böyüyür.
Uzun TTL = daha çox uğurlu müraciət, lakin cavablar daha köhnə ola bilər (orta yaş ≈ TTL/2).
6 dəqiqə ərzində isti açarları yükləyir (dəqiqədə keşin +12 %-i) 600 əlavə verilənlər bazası sorğusu/s bahasına.
Aşağı prioritetli 30 %-in (öncədən yükləmə, toplu, krouler) yük balanslaşdırıcıda “sonra yenidən cəhd edin” ilə rədd edilən payı.
Ağır funksiya hər sorğuya 20 ms CPU və bir verilənlər bazası sorğusu əlavə edir. Söndürülü: yumşaq degradasiya.
Son yaxşı buildi təzə parkda yenidən yerləşdirir (5 dəq, iki dəfə hesablanır), sonra trafiki keçirir. Yenidən basmaq hazırlığı yenidən başladır; canlı pis build yoxdursa, yalnız pul xərcləyir.
Göstəricilər
Xəta dərəcəsi
0,00%
normal
p99 gecikməsi
342ms
normal
Qalan xəta büdcəsi (30 gün)
50,0%
normal
Parkın istifadə dərəcəsi
52%
normal
Yanma sürəti (1 saat)
0,0 ×
Sorğular
1125 req/s
Xidmət göstərən instansiyalar
10
Yüklənən instansiyalar
0
Keşə düşmə dərəcəsi
77 %
Verilənlər bazasının istifadə dərəcəsi
19 %
Atılan trafik
0 %
Park xərci
4,00 $/h
İndiyədək xərc
0,00 $
Keşlənmiş cavabların orta yaşı
30 s
Pis buildə trafik
0 %
Tövsiyələr mövcuddur
100 %
Trend
Böhran ssenariləri
Səviyyə 1 · Pis buraxılış
Yeni build saat 09:10-da buraxılır. Ay artıq çətin keçib: xəta büdcəsinin yalnız 20 %-i qalıb. Yerləşdirmədən dəqiqələr sonra yanma sürəti xəbərdarlığı işə düşür. Büdcəni qoruyun.
Sonda qalan xəta büdcəsi ≥ 18,5 %
Yerləşdirmədən sonra orta xəta dərəcəsi ≤ 0,65 %
Park xərci ≤ $9.50
Səviyyə 2 · Qəfil izdiham
Xidmətə keçid sürətlə yayılır və bu səhər nə vaxtsa trafik artımı gözlənilir — nə vaxt və nə qədər böyük olacağını heç kim bilmir. Bu gün yeni instansiyaların işə düşməsi 8 dəqiqə çəkir. O gələndə xətaları və gecikməni aşağı saxlayın, boş gücə pul yandırmayın.
Orta xəta dərəcəsi ≤ 0,2 %
Orta p99 gecikməsi ≤ 400 ms
Orta atılan trafik ≤ 5 %
Ümumi xərc ≤ $21
Tövsiyələr vaxtın ≥ 85 %-ində mövcuddur
Səviyyə 3 · Soyuq keş
Günorta pikində texniki xidmət skripti bütün keşi boşaldır. İndi hər sorğu adi 85 % keşə düşmə dərəcəsinə görə ölçülmüş verilənlər bazasına gedir. Xidməti verilənlər bazasını həddindən artıq yükləmədən bərpa edin.
Orta xəta dərəcəsi ≤ 1,5 %
Verilənlər bazasının istifadəsi ilk dəqiqədən sonra heç vaxt 90 %-dən yuxarı deyil
Keşlənmiş cavabların orta yaşı orta hesabla ≤ 90 s
Ümumi xərc ≤ $9
Tövsiyələr vaxtın ≥ 80 %-ində mövcuddur
Orta atılan trafik ≤ 5 %
Əsas — rəqəmlərin arxasındakı model
Simulyatorun istifadə etdiyi hər əlaqə mənbəyi ilə birlikdə. Fərziyyə kimi qeyd olunan sabitlər illüstrativ kalibrləmələrdir.
Sorğular gündəlik əyri üstəgəl pozuntuları izləyir; dəqiqəlik say təsadüfidir (Puasson, normal yaxınlaşma) və bir az partlayışlıdır.
λ(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]Fərziyyə: işçi sayları, xidmət müddətləri, verilənlər bazasının tutumu, keşin ölçüsü, doldurma sürəti, qiymətlər və pis buildin xəta dərəcəsi orta ölçülü veb xidmət üçün nümunə qiymətlərdir.
Erlang C: M/M/N sistemində sorğunun boş işçi gözləməli olma ehtimalı.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Gözləmə vaxtı quyruğu: t-dən uzun gözləmə ehtimalı eksponensial azalır; 2 saniyəlik taymautda hələ gözləyən sorğular uğursuz olur. Tutumdan artıq hissə uğursuz olur.
Xidmət və gözləmə vaxtı kvantillərindən p99 gecikməsi.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Təxmini: xidmət və gözləmə kvantillərinin cəmi onların cəminin dəqiq p99-u deyil (bir az yüksək və ya aşağı ola bilər); sorğular millisaniyələr çəkdiyi üçün növbə hər dəqiqə daxilində sabit sayılır.
Little qanunu: məşğul işçilər = gəliş sürəti × xidmətdə vaxt.
TTL keşi: təsadüfi sorğularda hər buraxılış TTL dövrünü başladır, bu müddətdə sorğular keşə düşür.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Keş buraxılışları verilənlər bazasını yükləyir; onun növbə gecikməsi ona toxunan hər sorğunu ləngidir, bu isə tətbiq işçilərini də doldurur.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Fərziyyə: işçi sayları, xidmət müddətləri, verilənlər bazasının tutumu, keşin ölçüsü, doldurma sürəti, qiymətlər və pis buildin xəta dərəcəsi orta ölçülü veb xidmət üçün nümunə qiymətlərdir.
SLO və xəta büdcəsi: yanma sürəti büdcənin icazə verilənə nisbətən neçə dəfə sürətli xərcləndiyini göstərir.
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]
Yüklənmə gecikməsi və soyuma müddəti olan hədəf izləyən avtomatik miqyaslayıcı.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Fərziyyə: işçi sayları, xidmət müddətləri, verilənlər bazasının tutumu, keşin ölçüsü, doldurma sürəti, qiymətlər və pis buildin xəta dərəcəsi orta ölçülü veb xidmət üçün nümunə qiymətlərdir.
Modelin istifadə etdiyi digər iş sabitləri.
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 instancesFərziyyə: işçi sayları, xidmət müddətləri, verilənlər bazasının tutumu, keşin ölçüsü, doldurma sürəti, qiymətlər və pis buildin xəta dərəcəsi orta ölçülü veb xidmət üçün nümunə qiymətlərdir.
Təsadüfilik: seed-li mulberry32 generatoru; istifadə olunan paylanmalar — bərabər, eksponensial (tərs CDF), normal (Box–Muller), Puasson (Knuth). Seed göstərilir və paylaşıla bilər.
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