GH GambleHub

Բեռի փորձարկումը և սթրեսի պրոֆիլները

Live ռեզյումե

Բեռի փորձարկումը իրական և ծայրահեղ սցենարների տակ արտադրողականության և կայունության համակարգային ստուգումն է։ Հաջողության հիմքը 'ճիշտ մոդելը (բաց vs closed), որը գրանցվել է SLO-ի, մաքուր մետրիկի (latency/throughput/սխալներ/հագեցում), ռեպրեսենտատիվ տվյալները, ավտոմատիզացումը և կրկնությունը։ Արդյունքը ոչ թե «RPS թվերն» է, այլ լուծումը, որտեղ նեղ տեղերը, որքան արժե արտադրողականությունը, որտեղ մերժման շեմն է և ինչպես այն տեղափոխել։

SLO/SLI և ռուսական մետրերը

SLO (օրինակ): p95 API 24250 ms, p99-600 ms; սխալը 0։ 3 %/30 օր։

SLI: latency (p50/p95/p99), throughput (RPS/CPS/QPS), saturation (CPU/heap/GC/FD/conn), ошибки (5xx, timeouts), очереди (depth/lag), DB (locks, slow queries), кэш (hit-ratio).

Սխալների բուդդետները և Saturation-ձգիչները (օրինակ, CPU> 75% կամ queue depth> X-ը)։

Թեստերի տեսակներ

1. Baseline/Benchmark-ը միայնակ ծառայություն է/endpoint, «կատարյալ» պայմաններ։

2. Load-ը իրական «աշխատանքային օր» է + ramp-up/ramp-down։

3. Սթրեսսը մեծացնում է բեռը մինչև քայքայումը և ամրագրել breakpoint-ը։

4. Spike-ը կտրուկ ցատկ է (x2-x10 վայրկյանում/րոպե)։

5. Soak/Endurance-ը երկար պրոգոն է (8-72 ժամ) 'հիշողության արտահոսքը, լատենտության դրեյֆը։

6. Capacity-ը փուլային ստանդարտ է արտադրողականության կորի և տարաների պլանավորման համար։

7. Degradation/Chaos-mix-2019 + մասնակի ձախողումներ (դանդաղ BD, քեշի անկում, «թեքված» aplink)։

Մոդելի մոդելներ ՝ Open vs Closed

Open model (ավելի իրատեսական ինտերնետի համար), օգտագործողները գալիս են ինտեգրման ինտենսիվությամբ (Poisson-նման հոսք)։ Եթե համակարգը դանդաղեցնում է, հարցումները կուտակվում են, ոչ թե «սառեցնում»։

Closed model: վիրտուալ օգտագործողների ֆիքսված թիվը (VU) think-time-ից։ Երբ RPS-ի ձգձգումը մեծանում է, արհեստականորեն ընկնում է 'զգուշորեն եզրակացություններով։

Առաջարկություն 'առջևի API-ի համար օգտագործեք բաց model (k6' arrival-rate "), ներքին սինխրոն կոդերի համար 'closed։

Բեռի ավելցուկը (ձևանմուշներ)

«Սովորական օր» 'հիմնական ֆոն + ցերեկային տատանումները։

«Pik-ivent»: 10-30 րոպե մինչև սկսելը (progreve), կտրուկ spike սկզբում, սարահարթում, պոչը։

«Մրցույթը/հոսանքը» 'քայլերի անտառը, ընդմիջումներում կրկնվող պիկը։

«Ենթակառուցվածքի քայքայումը» 'կեսը դատարկ է, մեկ տարածաշրջանը անջատված է, PSA-ի լատենտության բարձրացումը։

«Failover» ՝ գյուղը հոսում է արգելոցի վրա 1-5 րոպեի ընթացքում։ ստուգում ենք scail/HPA/Retry փոթորիկները։

Տվյալները և շրջակա միջավայրի պատրաստումը

Թեստային տվյալները 'իրական կարդինալիտը (պրովայդերներ, արժույթներ, երկրներ), «կեղտոտ» դաշտերը, հարցումների բաշխումը (Pareto/Zipf)։

Գաղտնիքները/PII 'անանուն; բանալիներ/PSA - sandbox։

Շրջապատը 'առանձնացված perf-stand, մեկուսացում ինտեգրացիայից (mock/pro), ֆիքսված տարբերակները։

Դիտարկումը 'մետրիկները (Prometheus), լոգները (Loki/ELK), ճանապարհները (OTel)։ Գրեք build-id պատասխաններում։

Antimstorma retrav եւ impotenty

Retrai միայն idempotent վիրահատությունների համար։ տեղադրեք retry-budget (օրինակ, 10 տոկոսը)։

Exponential backoff + jitter; «collapsing» -ը նույնական GET-ն է։

Վճարումների համար 'գաղափարական բանալիներ և ակնհայտ արձաններ։

Պաշտպանություն thundering herd 'kash-loks, SWR, տեղական սեմաֆորներից։

Գործիքներ և արտոնագրեր

K6 (ջութակի, բաց-մոդելի, լավ հաշվետվությունների), Disust (Python-սցենարներ), Gatling (Scala), JMeter (լայն տեսականի)։

Արձանագրությունները ՝ HTTP/1։ 1/2/3, gRPC, WebSocket, TCP/UDP; սերվերը մի փորձարկեք «ինչպես GET»։

Գեներատորների հորիզոնական մեծացումը, ցանցային նեղ վայրի վերահսկումը։

Մենք ուտում ենք կոդերը ՝ www.rof/async-profiler/ebpf ծանրության տակ, OTel մայրուղիները։

K6 (բաց-մոդել + spike) մինի-օրինակ

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. Վարկածը, թե որ նեղ տեղերը հավանական են (CPU, BD, kash, ցանցը, TMS, GC)։

2. Ռուսական սցենարի/երթուղիների պրոֆիլը, կոդավորման, մոդելի մասնաբաժինը (բաց/closed), տվյալները։

3. Progrev/connects/TSA/մեկնաբաններ։

4. Սկզբնական քայլի մեծացումը մինչև ինտենսիվության բարձրացումը։

5. Սարահարթը պլանավորվում է կայուն մետրի և հետքերի հավաքումը։

6. Սթրեսը/անկումը ցույց են տալիս ոչնչացման կետերի որոնումը, մեքենա-սկեյլի դիտարկումը։

7. Վերլուծությունը բացատրում է մետրի, flamegraph, զեկույցը և փոփոխության պլանը։

8. Ռեպրուֆը նշանակեց CI-ի (Regression Perf) միջոցով։

Արդյունքների վերլուծություն

Կորի կորը «ռուսական ուշացում/սխալներ» 'փնտրում ենք ծնկի (capacity)։

Breakdown լատինականությունը 'ցանցը (SSA/TSA/connection), ռուսական, ծրագիրը, BD, արտաքին մարտահրավերները։

Սատուրնի ՝ CPU> 75-85 տոկոսը, GC pause> p95, I/O սպասումները, առաջադրանքների հերթը։

Առաձգականություն 'ավտոսկեյլի արձագանքման ժամանակը (HPA/KEDA), սառը սկիզբը, տաքացնելով քեշը։

Արժեքը ՝ $/1000 RPS բուժական SLO-ում, բյուջեի կանխատեսումը գագաթնակետին։

Ինժեներական պրակտիկա

Դեգրադացիայի ցուցիչները ՝ «պոչերը» p99, հերթերի աճը, hit-ratio անկումը, ռետրերի փորձերի աճը։

Բացառեք կոնֆաունդերները 'ածխաջրածնային ձայնագրիչների սահմանները, www.sctl, conn-pool, «reuse.ru», TIM շղթաները, OCSA-ը։

ԲԴ ՝ ինդեքսներ/պլաններ/հարցումներ, փամփուշտներ, բատչային վիրահատություններ, backpressure-ի վրա։

Քեշի 'չափսը/eviction-քաղաքականությունը, տաք բանալիները, կրկնօրինակումները։

Ցանցը/edge: HTTP/2/3, resumption 2470 տոկոսը, Brotli, CDN բանալին, tiered-cache։

Դիտարկումը բեռի տակ

Մետրիկները ՝ 108 (CPU/mem/IO), runtime (GC/heap), ցանցերը (RTT/loss/ECN), L7 (p95/99, 5xx/429), տողերը, BD/kash կլաստերները։

Թրեյզներ 'միացրեք «պոչի» վրա (tail-based), build-id/kanareks նշանները։

Լոգի 'սխալների ագրեգացիան ծավալի սահմանափակումով (որպեսզի ոչ թե «zaDOSկամ» log-pline)։

Փորձարկումները 'feature-flags-ը և եզրերը պետք է գրանցվեն գրանցամատյանում։

Ավտոմատիզացիա և CI/CD/CD

Perf-jobs-ում (smoke 3-5 րոպե, nightly 30-60 րոպե, weekly soak)։

Թույլատրության սահմանները ՝ լատենտ/սխալներ/ռեսուրսներ, ռեգրեսիայի ժամանակ «կոտրում ենք տոմսը»։

Արտեֆակտներ ՝ գրաֆիկներ, flamegraphs, պրոֆիլներ, JSON հաշվետվություններ (k6/jtl)։

Տվյալների և պարամետրերի տարբերակումը, PR-Reve Perf-ը։

Հատուկ iGaming/fintech համար

Դիագրամ/խաղեր ՝ spike + plateau; տաքացնելով TFC/MS/CDN, բարձրացված գնդակներ, «մոխրագույն» երթուղիներ բոտերի համար։

Վճարումները/PSA: sandbox-limits, idempotenty, խիստ թայմաուտներ; degrade-mode (գրացուցակների, հերթերի) ստուգում։

Ջեքպոտներ/ivents: Ատոմականություն և հաջորդականություն, դուբլի բացակայություն, որը տեղադրված է RNG/առաջնորդների վրա։

Անտիֆրոդ/AML 'կանոնների/ML-coring, backpressure, իրադարձությունների կրկնապատկումը։

Կարգավորիչ ՝ մետրի և տարբերակների տրամաբանությունը գագաթների, զեկույցների համար։

Չեկի թուղթ

  • Գրանցվել են SLO/SLI և «կարմիր գծեր» (սխալ/լատենտ/սատուրնի)։
  • Բեռի սցենարները և պրոֆիլները հաստատված են (բաց/closed, spike/soak/stress)։
  • Տվյալները իրատեսական են, PII-ը դիմակավորված է, sandbox/mock-ը։
  • Դիտողականությունը պատրաստ է 'չափումներ/թրեյսներ/լոգներ, թեգեր։
  • Համակարգերի դելեգները (ulimit/www.sctl/poo.ru) տեղադրված են։
  • Avto-skeila/տաքացում և rollback-չափանիշներ։
  • Շեմի ալերտները և թիմերի հաղորդակցման պլանը (on-call)։
  • System (գրաֆիկա, եզրակացություններ, գործողություններ) 2019։

Տիպիկ սխալներ

Closed-model թեստը տալիս է «կանաչ» արդյունքը, իսկ բացը նվազում է (չի կարելի անտեսել բաց մոդելը)։

Ոչ ներկայացուցչական տվյալները (մեկ արժույթ/մեկ պրովայդեր) կեղծ եզրակացություններ են։

Զրոյական պատրաստություն 'սառը քեշներ/TSA/կոննեկտներ, որոնք սկզբում բարձրացված լատենտ են։

Առանց սահմանների Ռետրաին հաստատեց փոթորիկը և կասկադային ընկճվածությունը։

Բոլոր ծառայությունների համար նույն պրոֆիլները բացատրվում են իրական «տաք կետերի»։

Soak-progons-ի բացակայությունը հիշողության արտահոսքը և dreeft-ը տեսանելի չեն։

Անթույլատրելի արդյունքներ. Ոչ մի հետք/ֆլեյմոգրաֆներ չեն կարող տեղայնացնել նեղ տեղը։

Մինի պլեյբուկները

Սահմանումը առավելագույն աշխատանքային ունակության (breakpoint)

1. Քաշի 10-20 տոկոսը յուրաքանչյուր 5-10-2) Մենք արձանագրում ենք մի պահ, որտեղ p95-ը կտրուկ աճում է և սխալները> SLO-ն։ 3) Մենք նկարում ենք CPU/BD/kash պրոֆիլները։ 4) Օպտիմիզացման պլանը և խոհարարը։

Գետերի փոթորիկների

1. Սահմանափակել retry-budget-ը և ներառել backoff + jitter-ը։ 2) Ներդրել request-colapsing/SWR։ 3) թույլ տալ «դեգրադային ռեժիմը» (սահմանափակ ֆունկցիոնալություն)։ 4) Փոխպատվաստել կուռքը։

Pik-ivent (մրցույթը) - պլան

1. Տաքացնել CDN/CSA/TSA/փամփուշտները։ 2) Ավելացնել target HPA-ն, գնել պահեստը։ 3) Առանձին rate-limits բոտերի համար։ 4) Dashbords «Pik-ռեժիմի», կապի կամուրջը on-call։

Soak-գիշեր

1. 8-12 ժամ կայուն բեռ։ 2) Դիտարկենք heap/FD/conn/GC-pauses։ 3) Ստուգենք p95 և hit-ratio դելտան։ 4) Մենք արձանագրում ենք արտահոսքեր և դրեյֆ։

Արդյունքը

Բեռի փորձարկումը ինժեներական լուծումների կայացման գործընթացն է, ոչ թե RPS-ի մրցավազքը։ Մոդելավորեք իրական պրոֆիլները (հատկապես բաց մոդելը), գրանցեք SLO-ը, նկարեք մետրեր և հետքեր, փնտրեք արտադրողականության ծնկներ և համարեք արտադրողականության արժեքը։ Ավտոմատիզացրեք դրանք, պահեք հակատանկային փոթորիկը և պլանավորեք գագաթնակետային իրադարձություններ, այնպես որ պլատֆորմը կլինի կանխատեսելի և կայուն ամենաբարդ պահերին։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։