GH GambleHub

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

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

1) Ինչո՞ ւ է դա անհրաժեշտ

Նպատակները

Հաստատել հզորությունը (որքան RPS/մրցակցային նստաշրջանները դիմակայեն համակարգը SLO-ի նշանակված)։

Գտնել շիշ բլշեր (CPU/IO/BD/ցանցեր/փամփուշտներ)։

Տեղադրել պերֆորանսային բյուջեները և «խաղացողները» CI/CD-ում։

Նվազեցնել ածխաջրածինների ռիսկը (p95/p99 ռեգրեսիա, պիկի ժամանակ սխալների աճը)։

Ծրագրավորել հզորությունը/արժեքը (skail-aut և պահուստներ)։


2) Պերմի թեստերի տեսակները

Load (աշխատանքային կոմպոզիցիա) 'իրատեսական կարգավորումը պիկի մոտ։ SLO-ի ղեկավարումը։

Stress (սթրեսը) 'մինչև/ավելի բարձր, ռուսական վարքագիծը քայքայվում է, որտեղ կոտրվում է։

Spike (իմպուլս) 'արագ բեռնման ցատկ, որն իրականացվում է առաձգականության/ավտոսկեյլ։

Soak/Endurance (երկար): ժամացույց/օր ռուսական արտահոսք, բեկորներ, latency։

Capacity/Scalability: Ինչպես է փոխվում throughput/latency scale-out; Ամդալա/Գուստաֆսոնի օրենքը։

Smoke perf: կարճ «ծխի» պրոգոնը յուրաքանչյուր ենթախմբում (peroce-saniti)։


3) Windows մոդելներ

Փակված մոդելը (fixed VUs/concurrency) '"N' օգտագործողներ, յուրաքանչյուր ոք դիմումներ է անում կլիենտում։ Ծանրաբեռնվածության վտանգը։

Բաց մոդել (arrival rate) 'շարժիչների հոսքը շարժիչի ինտենսիվությամբ (req/s), ինչպես իրական կյանքում։ Ավելի ճիշտ է հանրային API-ի համար։

Լիթլի օրենքը '«L = now.W»։

Փամփուշտի համար/105: Նվազագույն զուգահեռականությունը 108 '108 108 W "(ավելացրեք 20-50 տոկոսը)։

Որտեղ '07 "- throughput," W "- միջին ժամանակը։


4) Բեռի և սցենարի պրոֆիլները

User journey mix: login, browse, deposit, www.kout...)։

Think-time: Օգտագործողի դադարները (բաշխումը 'էքսպոնենցիալ/լոգոնորմ)։

Direprofile: Պատասխանների չափը, payload, փոփոխականությունն է։

Հարաբերակցություն 'կապեք քայլերը (կտորներ/հոսանքներ/ID) ինչպես իրական ֆլոուում։

Սառը/տաք/տաք կեսը 'առանձին պրոգոններ։

Read vs Write: Ընթերցումների/գրառումների հավասարակշռություն, ռետրերի համադրելիություն։

Մուլտֆիլմի տարածքը ՝ RTT, բաշխումը POP/ASN-ով։


5) Փորձարկման միջավայր

Մեկուսացում 'պատը մոտ է երկարացմանը' համաձայն տեղաբանության/պարամետրերի (բայց ոչ «բեյ»)։

Տվյալները 'PII դիմակավորում, ծավալներ, ինդեքսներ, ինչպես վաճառքում։

Բեռի գեներատորներ 'չեն հենվում CPU/ցանցում։ բաշխված վերքերը, ժամանակի համաժամացումը։

Դիտարկումը 'չափումներ/թրեյսներ/լոգներ, սինթեզիկա պարագծի վրա, CPU/heap։


6) Մետրիկի և SLI

Throughput: RPS/գործարքներ վայրկյանում։

Latency: p50/p95/p99, TTFB, server time vs network.

Errors '5x/4x/ստացիոնար սխալների մասը։

Saturation: CPU, load avg, GC, սկավառակի IOps/լատենտ, network, pool wait։

Բիզնես-SLI-ն 'ավանդի հաջողությունը 5s-ը, 652s-ի ապացույցը։

Շեմի արժեքները վերցրեք SLO-ից (օրինակ ՝ "99։ 95% 35300 ռուբլիներ"), վերահսկեք burn-rate-ը գետնի ժամանակ։


7) Փնտրել նեղ տեղեր (մեթոդաբանություն)

1. Կայուն տաքացրեք համակարգը 60-80 տոկոսով ռուսական բեռի վրա։

2. Ավելացրեք քայլերը (ramp) ամրացրեք որտեղ աճում է p95/p99 և error-rate։

3. Համեմատեք p99 աճի հետ

փամփուշտներում (DB/HTTP),

WAIT/loks (BD),

GC դադար/heap,

retransmits/packet loss,

սկավառակի լատենտ/cash propachi։

4. Լոկոմոտիվ 'երկուական որոնում հարցման ճանապարհին, ավելացողները (CPU/alloc/wwww.k-profile)։

5. Գրեք «շիշը» թյունինգը։


8) Սթրեսի տակ պահվածքը

Graceful degradation: limits, circuit-breakers, backpressure գծեր, ռեժիմը «ընդունվել է մշակման մեջ»։

Retrai 'առավելագույնը 1, միայն idempotent; ջիտթեր; գետերի բյուջեն կազմում է RPS-ի 10 տոկոսը։

Fail-op/Fail-closed: Ոչ կրիտիկական կախվածության համար թույլ տվեք fail-open (kash/Fail-closed)։

Cascading failure 'փամփուշտների/քվոտաների մեկուսացում (bulkhead), արագ թայմաուտներ, գործառույթների «սահուն» անջատումը (feature flags)։


9) Գործիքներ (ընտրություն առաջադրանքի համար)

k6 (System Script, բաց/բաց-մոդելը, արագ, հարմար CI-ում)։

JMeter (հարուստ էկոհամակարգ, GUI/CLI, պլագիններ, բայց ավելի դժվար)։

Gatling (Scala DSL, բարձր արտադրողականություն)։

Delust (Python, շարժիչների ճկունություն)։

Vegeta/hey/wrk (միկրո-բենչի և արագ ստուգում)։

Կանոն 'մեկ «հիմնական» գործիք + թեթև CLI-ի համար smoke-պերֆի համար PR-ում։


10) Օրինակներ (նեպետներ)

10. 1 k6 (բաց մոդել arrival rate)

js import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
scenarios: {
open_model: {
executor: 'ramping-arrival-rate',
startRate: 200, timeUnit: '1s',
preAllocatedVUs: 200, maxVUs: 2000,
stages: [
{ target: 500, duration: '5m' },  // до 500 rps
{ target: 800, duration: '5m' },  // стресс
{ target: 0,  duration: '1m' }
]
}
},
thresholds: {
http_req_duration: ['p(95)<300', 'p(99)<800'],
http_req_failed: ['rate<0.005'],
},
};

export default function () {
const res = http.get(`${__ENV.BASE_URL}/api/catalog?limit=20`);
sleep(Math.random() 2); // think-time
}

10. 2 JMeter (մրցույթի գաղափարը)

Thread Group + Stepping Thread или Concurrency Thread (open-like).
HTTP Request Defaults, Cookie Manager, CSV Data Set.

Backend Listener → InfluxDB/Grafana; Assertions ժամանակի/կոդ։

10. 3 Locust (Python)

python from locust import HttpUser, task, between class WebUser(HttpUser):
wait_time = between(0.2, 2.0)
@task(5)
def browse(self): self.client.get("/api/catalog?limit=20")
@task(1)
def buy(self): self.client.post("/api/checkout", json={"sku":"A1","qty":1})

11) Տվյալները, հարաբերակցությունը, պատրաստումը

Seed տվյալները ՝ կոդեր, օգտագործողներ, հավասարակշռություններ, հոսանքներ, ինչպես վաճառքում։

PII-ի դիմակավորում/անանունացում; սինթեզի գեներացիան իրական բաշխումների վերևում։

Հարաբերակցություն 'հանեք ID/հոսանքները պատասխաններից (RegExp/JSONPath) և օգտագործեք հաջորդ քայլերում։


12) Գռեհիկների ժամանակ նկատվում է տեսողությունը

RED-dashbords (Rate, Errors, Duration) երթուղիներով։

Exemplars: մետրից անցում դեպի հետքեր (trace _ id)։

Սխալների լոգներ 'sampling + ագրեգացիա, կրկնօրինակներ/idempotention։

Մոսկվա: CPU/GC/heap, սկավառակներ/ցանց, pool wait։

ԲԴ ՝ Լավագույն հարցումները, արգելափակումները, սկանների ինդեքսը, բլոատը։


13) Ավտոմատիզացիա և պերֆորմացիա-գեյթ

CI 'կարճ անցումներ merge-ում (օրինակ, k6 2-3 րոպե) շեմերով։

Nightly/Weekly: երկար soak/stress առանձին միջավայրում; հաշվետվություններ և միտումներ։

Կանարեքային ֆորումները 'SLO վերլուծություն (error-rate, p95) որպես «գեյթ» առաջընթաց։

Ռեգրեսիա 'baseline vs ընթացիկ տոմս; ալտերտները, երբ վատանում են> X%։


14) Տարաների պլանավորումը և արժեքը

Կորած throughput www.latency: www.knee point (ծնկի) - դրանից հետո p99 կտրուկ աճում է։

Skeil-aut: Չափեք մեծացման արդյունավետությունը (RPS/porta հանգույցներ)։

Արժեքը ՝ «RPS դոլար/ժամ», պինդ իրադարձությունների պահուստ + DR-պահուստ։


15) Anti-patterna

Ծեծել առանց վերահսկելու կամ փորձարկել «դատարկ» միջավայրում, որը նման չէ անցմանը։

Փակված մոդել ֆիքսված VU-ով, որը թաքցնում է ծանրաբեռնվածությունը։

Think-time/տվյալների բացակայությունը բացատրում է քեշի ոչ ռեալիստական հիթերը կամ հակառակը 'փոթորիկը դեպի ելքերը։

Մեկ սցենար «/ping »օգտագործողի ֆլոուի փոխարեն։

Դիտարկման բացակայությունը. <<տեսնում ենք միայն RPS-ը և միջին ուշացումը>>։

Անվերահսկելի վերափոխումները ինքնին DDoS-ն են։

Թեստի և օպտիմիզացման խառնուրդը առանց հիպոթեզների/փոփոխության։


16) Չեք Թիթերը (0-30 օր)

0-7 օր

SLI/SLO և ռուսական պրոֆիլները (mix, think-time, տվյալները)։

Ընտրեք գործիք (k6/JMeter/Mastust), բարձրացրեք RED-ի dashbords։

Պատրաստեք ստենդը և seed տվյալները, անջատեք երրորդ կողմի լիմիտները/գլխարկները։

8-20 օր

Կառուցեք սցենարներ 'բաց-մոդել (arrival rate), սառը/տաք/տաք կեշ։

Spload www.stress ww.spike; տեղադրեք knee point և նեղ տեղեր։

Ներդրեք CI (միկրո-պրոգոն)։

21-30 օր

Soak-թեստը 4-24 ժամ 'արտահոսք/dreaf GC, կայունացում։

Փաստարկեք սահմանները, տարաների պլանը, «RPS 24p95/սխալները»։

Պատրաստեք runbook «Ինչպե՞ ս ավելացնել սահմանները/սկեյլը» և «ինչպես քայքայել»։


17) Հասունության մետրերը

Կան իրական պրոֆիլներ (mix, think-time, տվյալները), որոնք ծածկում են 2480 տոկոսը։

RED-dashbords + ճանապարհը միացված է բոլոր թեստերի համար։

Պերֆորանսը գեյտերը արգելափակում են ֆորումները ռ95/սխալների ռեգրեսիայի ժամանակ։

Հզորությունը և knee point-ը փաստաթղթավորված են հիմնական ծառայություններով։

Ամսական soak/stress-pross և դինամիկայի հաշվետվությունները։

«Spike» -ի դիմադրությունը ապացուցված է ավտո սկեյլի և cascade-fail-ի բացակայությամբ։


18) Եզրակացություն

Բեռի փորձարկումը կառուցվածքային ինժեներական պրակտիկա է, ոչ թե վարակիչ «չափիչ»։ Մոդելավորեք իրական օգտագործողներին (բաց-մոդելը), չափեք այն, ինչ արտահայտում է հաճախորդի փորձը (SLI/SLO), պահեք CI/CD-ում դիտողությունն ու «խաղացողները», իրականացրեք stress/spike/soak-progone և ամրագրեք knee point։ Այդ ժամանակ գագաթնակետային իրադարձությունները և սև կարապները վերածվում են կառավարվող սցենարների, իսկ արտադրողականությունը 'ձեր պլատֆորմի կանխատեսելի և չափելի պարամետրերի։

Contact

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

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

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

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

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

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