🖥️ தகவல் தொழில்நுட்பச் செயல்பாடுகள் — தள நம்பகத்தன்மை நேரடி மாதிரி
ஒரு வலைச் சேவைக்கு நீங்கள் அழைப்புப் பணியில் உள்ளீர்கள்: நிகழ்வுக் கூட்டத்துக்கு முன் சுமை சமநிலையாக்கி, தரவுத்தளத்துக்கு முன் சேமிப்பு, 99.9 % கிடைக்கும் தன்மை இலக்கு. ஒவ்வொரு நிமிடமும் மாதிரி வரிசைத் தாமதம், நேரமுடிவுகள், சேமிப்பு வெற்றிகள், தரவுத்தள சுமை ஆகியவற்றைப் பாடநூல் சூத்திரங்களால் கணக்கிடுகிறது — உங்கள் முடிவுகளின் செலவையும்.
நீங்கள் என்ன கற்பீர்கள்
முழுப் பயன்பாட்டுக்கு அருகில் தாமதம் ஏன் வெடிக்கிறது (Erlang C), துவக்கத் தாமதமுள்ள தானியங்கு அளவீட்டு மாற்றம் ஏன் எப்போதும் தாமதமாக வருகிறது.
SLO-க்கள், பிழை பட்ஜெட்டுகள், எரிப்பு-விகித எச்சரிக்கைகள் எப்போது திரும்பப்பெறுவது என்பதை எவ்வாறு தீர்மானிக்கின்றன.
குளிர் சேமிப்பு எவ்வாறு தரவுத்தள முடக்கமாகிறது, எந்தக் கருவிகள் நேரம் வாங்கும்: நீக்குதல், தரம் குறைத்தல், சூடேற்றுதல்.
சிமுலேட்டர்
நேரம் 0 நிமி
▶நிகழ்வு சேவை செய்கிறது
⚙நிகழ்வு துவங்குகிறது
!மோசமான கட்டமைப்பில் நிகழ்வு
·காலி இடம்
•வரும் கோரிக்கைகள்
கட்டுப்பாடுகள்
கூட்டத்தின் அடித்தளம். உயர்த்தினால் நிகழ்வுகள் உடனே தொடங்கும் — அவை பணியாற்றுமுன் துவக்கத் தாமதம் தேவை.
பயன்பாட்டின் மீது இலக்குப் பின்தொடர்தல்; நிகழ்வுகள் இன்னும் துவங்கும்போது புதிய விரிவாக்கம் இல்லை. அணைப்பு = சரியாகக் குறைந்தபட்சம்.
குறைவு = அதிக இடைவெளி, அதிகச் செலவு. அளந்த பயன்பாடு 100 %-ஐத் தாண்ட முடியாது; எனவே நிறைவுற்ற கூட்டம் படிப்படியாக மட்டுமே வளரும்.
நீண்ட TTL = அதிக வெற்றி, ஆனால் பதில்கள் பழையவையாக இருக்கலாம் (சராசரி வயது ≈ TTL/2).
6 நிமிடங்களுக்கு அடிக்கடி பயன்படும் விசைகளை ஏற்றும் (நிமிடத்துக்கு சேமிப்பில் +12 %), 600 கூடுதல் தரவுத்தள வினவல்கள்/வி என்ற விலையில்.
குறைந்த முன்னுரிமையான 30 %-இல் (முன்னேற்றல், தொகுதி, ஊர்ந்தவை) சுமை சமநிலையாக்கியில் “பிறகு முயற்சிக்கவும்” என நிராகரிக்கப்படும் பங்கு.
கனமான அம்சம் ஒவ்வொரு கோரிக்கைக்கும் 20 ms 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 %
போக்கு
நெருக்கடிச் சூழல்கள்
நிலை 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-வி நேரமுடிவில் இன்னும் காத்திருக்கும் கோரிக்கைகள் தோல்வியடையும். திறனைத் தாண்டினால் மிகை தோல்வியடையும்.
சேவை நேரம் மற்றும் காத்திருப்பு நேரத்தின் அளவுக்கூறுகளிலிருந்து p99 தாமதம்.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]தோராயம்: சேவை மற்றும் காத்திருப்புக் கிவாண்டைல்களைக் கூட்டுவது அவற்றின் கூட்டுத்தொகையின் துல்லியமான p99 அல்ல (சிறிது அதிகமாகவோ குறைவாகவோ இருக்கலாம்); கோரிக்கைகள் மில்லிவினாடிகளில் முடிவதால், ஒவ்வொரு நிமிடத்துக்குள்ளும் வரிசை நிலையானதாகக் கருதப்படுகிறது.
லிட்டிலின் விதி: பணிபுரியும் தொழிலாளர்கள் = வருகை விகிதம் × சேவை நேரம்.
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). விதை காட்டப்படுகிறது, பகிரக்கூடியது.
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