आईटी सञ्चालन — साइट विश्वसनीयता लाइभ मोडेल

तपाईं वेब सेवाका लागि अन-कल हुनुहुन्छ: इन्स्ट्यान्सहरूको बेडाअघि लोड ब्यालेन्सर, डाटाबेसअघि क्यास, र 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 % (प्रिफेच, ब्याच, क्रलर) मध्ये "पछि फेरि प्रयास गर्नुहोस्" सहित लोड ब्यालेन्सरमा अस्वीकृत हिस्सा।

भारी फिचरले प्रति अनुरोध 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

यो काम पेसाका रूपमा को गर्छ

शैक्षिक मोडेल — सञ्चालन निर्णयका लागि होइन। वास्तविक साइटले हरेक स्थिरांक आफ्नै उपकरण र तथ्याङ्कअनुसार मिलाउँछन्।