परीक्षण और तनाव प्रोफाइल लोड करें
संक्षिप्त सारांश
लोड परीक्षण यथार्थवादी और चरम परिदृश्यों के तहत प्रदर्शन और लचीलापन का एक सिस्टम परीक्षण है। सफलता का आधार: सही यातायात मॉडल (खुला बनाम बंद), निश्चित एसएलओ, शुद्ध मीट्रिक (विलंबता/थ्रूपुट/त्रुटियां/संतृप्ति), प्रतिनिधि डेटा, स्वचालन और दोहराव। परिणाम एक "आरपीएस आंकड़ा" नहीं है, बल्कि एक समाधान है: जहां अड़ चनें हैं, प्रदर्शन की लागत कितनी है, विफलता कहां है और इसे कैसे स्थानांतरित किया जाए।
SLO/SLI और लक्ष्य मैट्रिक्स
SLO (उदाहरण): p95 API ≤ 250 ms, p99 ≤ 600 ms; त्रुटि ≤ 0। 3 %/30 दिन।
SLI: विलंबता (p50/p95/p99), थ्रूपुट (RPS/CPS/QPS), संतृप्ति (CPU/ढेर/GC/FD/conn), ошибки (5xx, टाइमआउट), очереди (गहराई/लैग), क्वेरी, क्वेरी), кэш (हिट-अनुपात)।
त्रुटि और संतृप्ति ट्रिगर (उदाहरण के लिए, CPU> 75% या कतार गहराई> X → गिरावट)।
परीक्षणों के प्रकार
1. बेसलाइन/बेंचमार्क - एकल सेवा/समापन बिंदु, "आदर्श" स्थितियां।
2. लोड - यथार्थवादी "वर्किंग डे" + रैंप-अप/रैंप-डाउन।
3. तनाव - गिरावट और ब्रेकपॉइंट फिक्सेशन के लिए भार बढ़ाएं।
4. स्पाइक - तेज कूद (सेकंड/मिनट में x2-x10)।
5. सोक/धीरज - लंबी दौड़ (8-72 एच): मेमोरी लीक, विलंबता बहाव।
6. क्षमता - निष्पादन वक्र और क्षमता नियोजन के लिए चरण भार।
7. गिरावट/कैओस-मिक्स - लोड + आंशिक विफलताएं (धीमा डेटाबेस, कैश ड्रॉप, "ढह" एप्लिंक)।
ट्रैफिक मॉडल: ओपन बनाम क्लोज्ड
ओपन मॉडल (इंटरनेट के लिए अधिक यथार्थवादी): उपयोगकर्ता· तीव्रता (पॉइसन जैसी धारा) के साथ आते हैं। यदि सिस्टम धीमा हो जाता है, तो अनुरोध जमा हो जाते हैं, न कि "जमे हुए"।
बंद मॉडल - थिंक-टाइम के साथ आभासी उपयोगकर्ताओं (वीयू) की एक निश्चित संख्या। जब देरी बढ़ ती है, तो आरपीएस कृत्रिम रूप से गिर जाता है - सावधानी से निष्कर्ष के साथ।
सिफारिश: फ्रंट-एंड एपीआई के लिए आंतरिक तुल्यकालिक लिपियों के लिए ओपन मॉडल (k6 'arrrial-rate') का उपयोग करें - बंद के साथ संयोजन करें।
लोड प्रोफाइल (टेम्पलेट्स)
"सामान्य दिन": आधारभूत पृष्ठभूमि + दैनिक उतार-चढ़ाव।
"पीक इवेंट": शुरुआत से 10-30 मिनट पहले (वार्म-अप), शुरुआत में तेज स्पाइक, पठार, पूंछ।
"टूर्नामेंट/स्ट्रीम": सीढ़ी कदम, अंतराल में बार-बार चोटियाँ।
"बुनियादी ढांचा गिरावट": आधा कैश खाली है, एक क्षेत्र बंद है, पीएसपी विलंबता बढ़ जाती है।
"विफलता": 1-5 मिनट में सुरक्षा के लिए यातायात प्रवाह; ऑटो-स्केल/एचपीए/रीट्री तूफानों की जाँच कर रहा है।
पर्यावरण डेटा और तैयारी
परीक्षण डेटा: यथार्थवादी कार्डिनैलिटी (प्रदाता, मुद्राएं, देश), गंदे क्षेत्र, क्वेरी वितरण (Pareto/Zipf)।
रहस्य/PII: गुमनामी; कुंजी/PSP - सैंडबॉक्स।
पर्यावरण: समर्पित पर्फ स्टैंड, एकीकरण से अलगाव (नकली/छुरा), निश्चित संस्करण।
अवलोकन: मैट्रिक्स (प्रोमेथियस), लॉग (लोकी/ईएलके), निशान (ओटेल)। प्रतिक्रियाओं में रिकॉर्ड बिल्ड-आईडी।
एंटीस्टॉर्म रिट्रेज़और आइडेम्पोटेंस
रेट्राई केवल पहचान संचालन के लिए; सेट रीट्री-बजट (उदाहरण के लिए ≤ 10% यातायात)।
घातीय बैकऑफ + जिटर; "ढहना" समान GETs।
भुगतान के लिए - पहचान कुंजी और स्पष्ट स्थिति।
गड़गड़ाहट के खिलाफ सुरक्षा: कैश लॉक, एसडब्ल्यूआर, स्थानीय सेमाफोर।
उपकरण और पैटर्न
k6 (स्क्रिप्टिंग, ओपन-मॉडल, अच्छी रिपोर्टिंग), टिड्डी (पायथन स्क्रिप्ट), गैटलिंग (स्काला), जेमेटर (प्रोटोकॉल की एक विस्तृत श्रृंखला)।
प्रोटोकॉल: HTTP/1। 1/2/3, जीआरपीसी, वेबसॉकेट, टीसीपी/यूडीपी; पुश सर्वर "गेट" के रूप में परीक्षण नहीं करते हैं।
ट्रैफिक जनरेशन: जनरेटर की क्षैतिज स्केलिंग, नेटवर्क अड़ चन का नियंत्रण।
प्रोफाइल को हटाना: pprof/async-profiler/ebpf लोड के तहत, Otel मार्ग।
मिनी-उदाहरण k6 (ओपन-मॉडल + स्पाइक):javascript import http from 'k6/http';
import {check, sleep} from 'k6';
export const options = {
scenarios: {
warmup: { executor: 'ramping-arrival-rate', startRate: 50, timeUnit: '1s',
preAllocatedVUs: 200, stages: [ { target: 200, duration: '5m' } ] },
spike: { executor: 'constant-arrival-rate', rate: 1200, timeUnit: '1s',
preAllocatedVUs: 2000, startTime: '6m', duration: '3m' }
},
thresholds: {
http_req_failed: ['rate<0. 3%'],
http_req_duration: ['p(95)<250', 'p(99)<600']
}
};
export default function () {
const res = http. get(`${__ENV. BASE_URL}/api/v1/catalog? c=${Math. floor(Math. random()1000)}`);
check(res, { 'status is 200': (r) => r. status === 200 });
sleep(Math. random()0. 9) ;//think time (for closed parts of the script)
}
प्रक्रिया
1. परिकल्पना - कौन सी अड़ चनें होने की संभावना है (सीपीयू, डीबी, कैश, नेटवर्क, टीएलएस, जीसी)।
2. प्रोफाइल - परिदृश्य/मार्ग, यातायात शेयर, मॉडल (खुला/बंद), डेटा।
3. वार्म-अप → कैश/कनेक्शन/टीएलएस/दुभाषिया।
4. लक्ष्य की तीव्रता के लिए → चरण की वृद्धि।
5. पठार → स्थिर मैट्रिक्स और निशान का संग्रह।
6. तनाव/गिरावट - एक ब्रेक पॉइंट खोजें, ऑटो-स्केल का निरीक्षण करें।
7. → सहसंबद्ध मैट्रिक्स, फ्लेमीग्राफ, रिपोर्ट और परिवर्तन योजना का विश्लेषण करें।
8. Repruf → CI (क्षेत्र Perf) पाइपलाइन के माध्यम से दोहराएं।
परिणामों का विश्लेषण
→ देरी/त्रुटि वक्र लोड करें: कोहनी (क्षमता) के लिए देख रहा है।
ब्रेकडाउन लेटेंसी: नेटवर्क (DNS/TLS/कनेक्ट), प्रॉक्सी, एप्लिकेशन, डेटाबेस, बाहरी कॉल।
संतृप्ति: CPU> 75-85%, GC ठहराव> p95, I/O इंतजार करता है, कार्य कतार।
इलास्टिसिटी: ऑटोस्केल रिएक्शन टाइम (HPA/KEDA), कोल्ड स्टार्ट, कैश वार्म-अप।
लागत: लक्ष्य SLO में $/1000 RPS, पीक बजट पूर्वानुमान।
इंजीनियरिंग अभ्यास
गिरावट के संकेतक: "पूंछ" p99, कतार वृद्धि, हिट-अनुपात ड्रॉप, रेट्रे प्रयासों की वृद्धि।
कन्फ्यूज़र्स को बाहर करें: फ़ाइल डिस्क्रिप्टर लिमिट, sysctl, conn-pool, 'reuseport', TLS चेन, OCSP।
डीबी: इंडेक्स/प्लान/क्वेरी कैश, कनेक्शन पूल, बैच ऑपरेशन, उत्पादकों पर बैकप्रेशर।
कैश: आकार/निष्कासन नीति, गर्म कुंजी, प्रतिकृति।
नेटवर्क/एज: HTTP/2/3, resumption≥70%, ब्रोटली, सीडीएन कैश कुंजी, टियर-कैश।
लोड के तहत अवलोकन
मेट्रिक्स: सिस्टम (सीपीयू/मेम/आईओ), रनटाइम (जीसी/ढेर), नेटवर्क (आरटीटी/हानि/ईसीएन), एल 7 (पी 95/99, 5xx/429), कतारें, डेटाबेस क्लस्टर/कैश।
ट्रेल्स: "पूंछ" (पूंछ-आधारित), बिल्ड-आईडी/कैनरी निशान पर नमूना शामिल हैं।
लॉग: वॉल्यूम सीमा के साथ त्रुटियों का एकत्रीकरण (ताकि "forDOSor" लॉग-पाइपलाइन न हो)।
प्रयोग: रिपोर्ट में फीचर-फ्लैग और कॉन्फ्रेंस दर्ज किए जाने चाहिए।
स्वचालन और सीआई/सीडी
सीआई में पर्फ-जॉब्स (3-5 मिनट, रात में 30-60 मिनट, साप्ताहिक सोख)।
सहिष्णुता की सीमा: विलंबता/त्रुटियां/संसाधन - प्रतिगमन में "ब्रेक बिल्ड"।
कलाकृतियाँ: रेखांकन, फ्लेमीग्राफ, प्रोफाइल, JSON रिपोर्ट (k6/jtl)।
डेटा और स्क्रिप्ट का संस्करण, perf स्क्रिप्ट की पीआर-समीक्षा।
iGaming/fintech विशिष्ट
टूर्नामेंट/मैच: स्पाइक + पठार; TLS/DNS/CDN वार्मिंग, पूल की सीमा में वृद्धि, बॉट्स के लिए ग्रे मार्ग।
भुगतान/PSP: सैंडबॉक्स सीमा, पहचान, सख्त समय; डिग्रेड-मोड (निर्देशिका कैश, कतारें) की जाँच कर रहा है।
जैकपॉट/घटनाएँ: परमाणु और स्थिरता, कोई लेता नहीं, आरएनजी/लीडबोर्ड पर भार।
एंटी-फ्रॉड/एएमएल: नियमों/एमएल स्कोरिंग, बैकप्रेशर, इवेंट डिडुप्लिकेशन पर लोड करें।
नियामक: चोटियों पर लॉगिंग मैट्रिक्स और संस्करण, ऑडिट के लिए रिपोर्ट।
चेकलिस्ट लांच करें
- फिक्स्ड एसएलओ/एसएलआई और लाल लाइनें (त्रुटि/विलंबता/संतृप्ति)।
- लोड परिदृश्य और प्रोफाइल अनुमोदित हैं (खुले/बंद, स्पाइक/सोक/तनाव)।
- डेटा यथार्थवादी, पीआईआई नकाबपोश, एकीकरण सैंडबॉक्स/मॉक।
- अवलोकन तैयार: मेट्रिक्स/ट्रेल्स/लॉग, रिलीज टैग।
- सिस्टम कॉन्फ़िग (ulimit/sysctl/pool) प्रलेखित हैं।
- ऑटो-स्केल/कैश वार्म-अप योजना और रोलबैक मानदंड।
- थ्रेशोल्ड अलर्ट और ऑन-कॉल योजना।
- रिपोर्टिंग टेम्पलेट (चार्ट, निष्कर्ष, क्रिया) तैयार किया जाता है।
सामान्य त्रुटियाँ
बंद मॉडल परीक्षण एक "हरे" परिणाम का उत्पादन करता है, और उत्पाद गिरता है (आप ओपन-मॉडल को अनदेखा नहीं कर सकते हैं)।
अप्राप्य डेटा (एक मुद्रा/एक प्रदाता) → झूठे निष्कर्ष।
शून्य तैयारी: ठंडे कैश/टीएलएस/कनेक्शन - शुरुआत में अत्यधिक विलंबता।
रेट्राई बिना सीमा के - तूफान और झरना गिरता है।
सभी सेवाओं के लिए एक ही प्रोफाइल - वास्तविक "हॉट स्पॉट" को छोड़ देना।
सोख रन की अनुपस्थिति → मेमोरी लीक और बहाव दिखाई नहीं देता है।
अपारदर्शी परिणाम: कोई निशान/फ्लेमग्राफ - अड़ चन का पता लगाने में असमर्थ।
मिनी प्लेबुक
ब्रेकपॉइंट परिभाषित करना
1. हर 5-10 मिनट में 10-20% लोड के चरण। 2) उस क्षण को ठीक करें जहां p95 तेजी से बढ़ ता है और त्रुटियां> एसएलओ। 3) सीपीयू/डीबी/कैश प्रोफाइल निकालें। 4) अनुकूलन योजना और दोहराएं।
रेट्रे तूफान में फिर से
1. रीट्री-बजट को प्रतिबंधित करें और बैकऑफ + जिटर सक्षम करें। 2) अनुरोध-पतन/SWR दर्ज करें। 3) "अपमानित मोड" (सीमित कार्यक्षमता) की अनुमति दें। 4) डबल-चेक आइडेम्पोटेंसी।
पीक इवेंट (टूर्नामेंट) - प्री-प्लान
1. सीडीएन/डीएनएस/टीएलएस/पूल गर्म करें। 2) लक्ष्य एचपीए बढ़ाएं, रिजर्व तैयार करें। 3) बॉट के लिए अलग दर सीमा। 4) पीक-मोड डैशबोर्ड, ऑन-कॉल संचार पुल।
सोक-नाइट
1. 8-12 घंटे का स्थिर भार। 2) ढेर/एफडी/कॉन/जीसी-ठहराव मॉनिटर करें। 3) p95 डेल्टा और हिट-अनुपात की जाँच करें। 4) लीक और बहाव को ठीक करें।
परिणाम
लोड परीक्षण एक इंजीनियरिंग निर्णय लेने की प्रक्रिया है, न कि आरपीएस के लिए दौड़। "मॉडल असली प्रोफाइल (विशेष रूप से खुले मॉडल), एसएलओ पर कब्जा करें, मैट्रिक्स और निशान लें, प्रदर्शन घुटने की तलाश करें, और प्रदर्शन की लागत की गिनती करें। स्वचालित रन, एंटी-स्टॉर्म रिट्रीट रखें और पीक इवेंट की योजना बनाएं - इस तरह से प्लेटफॉर्म सबसे तनावपूर्ण क्षणों में अनुमानित और स्थिर होगा।