🖥️ Operasi IT — kebolehpercayaan tapak Model langsung
Anda bertugas siap sedia untuk perkhidmatan web: pengimbang beban di hadapan armada instans, cache di hadapan pangkalan data, dan objektif ketersediaan 99.9 %. Setiap minit model mengira kelewatan barisan gilir, tamat masa, hit cache dan beban pangkalan data daripada formula buku teks — dan kos keputusan anda.
Apa yang akan anda pelajari
Mengapa kependaman meletup menghampiri penggunaan penuh (Erlang C), dan mengapa penskalaan automatik dengan lengah but sentiasa tiba lewat.
Bagaimana SLO, bajet ralat dan amaran kadar bakar menentukan bila hendak menggulung balik.
Bagaimana cache sejuk bertukar menjadi gangguan pangkalan data, dan tuas mana yang membeli masa: penolakan, degradasi, pemanasan.
Simulator
Masa 0 min
▶Instans berkhidmat
⚙Instans sedang but
!Instans pada binaan buruk
·Slot kosong
•Permintaan masuk
Kawalan
Lantai untuk armada. Menaikkannya melancarkan instans serta-merta — namun ia masih memerlukan lengah but sebelum berkhidmat.
Penjejakan sasaran pada penggunaan; tiada pengembangan baharu selagi instans masih sedang but. Mati = tepat minimum.
Lebih rendah = lebih ruang dan lebih kos. Penggunaan yang diukur tidak boleh melebihi 100 %, jadi armada tepu hanya berkembang langkah demi langkah.
TTL lebih panjang = lebih banyak hit, tetapi jawapan boleh lebih lama (umur purata ≈ TTL/2).
Memuatkan kunci popular selama 6 minit (+12 % cache seminit) dengan harga 600 pertanyaan pangkalan data tambahan/s.
Bahagian 30 % keutamaan rendah (prafetch, kelompok, perangkak) yang ditolak di pengimbang beban dengan “cuba lagi kemudian”.
Ciri berat menambah 20 ms CPU dan satu pertanyaan pangkalan data setiap permintaan. Mati = degradasi anggun.
Menggunakan semula binaan baik terakhir pada armada baharu (5 min, dibilkan dua kali), kemudian menukar trafik. Menekan lagi memulakan semula persediaan; tanpa binaan buruk yang aktif ia hanya membazir wang.
Penunjuk
Kadar ralat
0.00%
normal
Kependaman p99
342ms
normal
Bajet ralat berbaki (30 hari)
50.0%
normal
Penggunaan armada
52%
normal
Kadar bakar (1 h)
0.0 ×
Permintaan
1125 req/s
Instans berkhidmat
10
Instans sedang but
0
Kadar hit cache
77 %
Penggunaan pangkalan data
19 %
Trafik ditolak
0 %
Kos armada
4.00 $/h
Kos setakat ini
0.00 $
Umur purata jawapan dalam cache
30 s
Trafik pada binaan buruk
0 %
Cadangan tersedia
100 %
Aliran
Senario krisis
Tahap 1 · Keluaran buruk
Binaan baharu dikeluarkan pada 09:10. Bulan ini sudah pun sukar: hanya 20 % bajet ralat berbaki. Beberapa minit selepas penempatan, halaman kadar bakar berbunyi. Lindungi bajet.
Bajet ralat berbaki pada akhir ≥ 18.5 %
Purata kadar ralat ≤ 0.65 % selepas penempatan
Kos armada ≤ $9.50
Tahap 2 · Kesesakan pengunjung mendadak
Pautan ke perkhidmatan merebak dengan cepat dan lonjakan trafik dijangka pada suatu masa pagi ini — tiada siapa tahu bila, atau sebesar mana. Instans baharu memerlukan 8 minit untuk bermula hari ini. Apabila ia tiba, kekalkan ralat dan kependaman rendah tanpa membazir wang pada kapasiti yang tidak digunakan.
Purata kadar ralat ≤ 0.2 %
Purata kependaman p99 ≤ 400 ms
Purata trafik ditolak ≤ 5 %
Jumlah kos ≤ $21
Cadangan tersedia ≥ 85 % masa
Tahap 3 · Cache sejuk
Pada puncak tengah hari satu skrip penyelenggaraan mengosongkan seluruh cache. Setiap permintaan kini ke pangkalan data, yang direka untuk kadar hit biasa 85 %. Pulihkan perkhidmatan tanpa membebankan pangkalan data.
Purata kadar ralat ≤ 1.5 %
Penggunaan pangkalan data tidak pernah melebihi 90 % selepas minit pertama
Umur purata jawapan dalam cache ≤ 90 s secara purata
Jumlah kos ≤ $9
Cadangan tersedia ≥ 80 % masa
Purata trafik ditolak ≤ 5 %
Asas — model di sebalik angka
Setiap hubungan yang digunakan simulator, beserta sumbernya. Pemalar yang ditandakan sebagai andaian ialah penentukuran ilustrasi.
Permintaan mengikut lengkung harian ditambah gangguan; kiraan seminit adalah rawak (Poisson, anggaran normal) dengan sedikit kemeletupan.
λ(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]Andaian: bilangan pekerja, masa perkhidmatan, kapasiti pangkalan data, saiz cache, kelajuan isi semula, harga dan kadar ralat binaan buruk ialah nilai ilustrasi untuk perkhidmatan web bersaiz sederhana.
Erlang C: kebarangkalian permintaan perlu menunggu pekerja bebas dalam sistem M/M/N.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Ekor masa menunggu: peluang menunggu lebih lama daripada t jatuh secara eksponen; permintaan yang masih menunggu pada tamat masa 2 s gagal. Melebihi kapasiti, lebihan itu gagal.
Kependaman p99 daripada kuantil masa perkhidmatan dan masa menunggu.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Anggaran: menambah kuantil perkhidmatan dan penantian bukan p99 tepat bagi jumlahnya (boleh sedikit tinggi atau rendah); baris gilir dianggap mantap dalam setiap minit kerana permintaan mengambil milisaat.
Hukum Little: pekerja sibuk = kadar ketibaan × masa dalam perkhidmatan.
Cache TTL: dengan permintaan rawak, setiap miss memulakan tempoh TTL yang mana permintaan mendapat hit.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Miss cache membebankan pangkalan data; kelewatan barisan gilirnya melambatkan setiap permintaan yang menyentuhnya, yang turut memenuhkan pekerja aplikasi.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Andaian: bilangan pekerja, masa perkhidmatan, kapasiti pangkalan data, saiz cache, kelajuan isi semula, harga dan kadar ralat binaan buruk ialah nilai ilustrasi untuk perkhidmatan web bersaiz sederhana.
SLO dan bajet ralat: kadar bakar menyatakan berapa kali lebih pantas daripada yang dibenarkan bajet itu dibelanjakan.
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]
Penskala automatik penjejakan sasaran dengan lengah but dan tempoh penyejukan.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Andaian: bilangan pekerja, masa perkhidmatan, kapasiti pangkalan data, saiz cache, kelajuan isi semula, harga dan kadar ralat binaan buruk ialah nilai ilustrasi untuk perkhidmatan web bersaiz sederhana.
Pemalar operasi lain yang digunakan oleh model.
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 instancesAndaian: bilangan pekerja, masa perkhidmatan, kapasiti pangkalan data, saiz cache, kelajuan isi semula, harga dan kadar ralat binaan buruk ialah nilai ilustrasi untuk perkhidmatan web bersaiz sederhana.
Keberawakan: penjana mulberry32 berbenih; taburan yang digunakan — seragam, eksponen (CDF songsang), normal (Box–Muller), Poisson (Knuth). Benih dipaparkan dan boleh dikongsi.
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