GH GambleHub

Iş ýüki we stres synagy

1) Adalgalar we maksatlar

Load test - SLO garşy iş zolagynda (maksat RPS/bäsdeşlik) barlag (mysal üçin, p95 <200 ms, error rate <0. 5%).
Stress test - çäklerden çykmak (CPU/DB/toruň doýgunlygyna çenli/artykmaç), zaýalanma we dikeldiş mehanikasyna syn etmek.
Spike test - ýüküň ýiti partlamalary (minutlaryň dowamynda N ×).
Soak/Endurance - syzmak, GC süýşmek, bölmek, nobatlaryň köpelmegi üçin uzak aralyk (sagat/gün).
Capacity test - geçiriş kuwwatynyň platosyny (saturation point) we ätiýaçlyklary hasaplamak.

Maksatlar: SLO-ny tassyklamak, platony düzmek, päsgelçiliklere düşünmek, awto-masştaby we çäkleri kalibrlemek.

2) Traffik modeli: açyk vs ýapyk

Ýapyk model (concurrency-driven): wirtual ulanyjylaryň (VUs) kesgitlenen sany, jogapdan soň her biri think time edýär.
Açyk model (arrival-rate): jogaplara garamazdan haýyşlaryň (RPS) alynmagynyň kesgitlenen intensiwligi.

💡 Prodda köplenç "açyk" dünýä (ulanyjylar gelýänçä gelýärler), şonuň üçin API/web bekleri üçin arrival rate modellemek ileri tutulýar.

Little’s Law: `L = λ W`

'L' - bir wagtyň özünde hyzmat edilýän haýyşlaryň ortaça sany,

'λ' - intensiwlik (RPS),

'W' - ortaça jogap wagty.
Şonuň üçin "concurrency ≈ target_RPS p95_latency'.

3) Metrikler: nämäni ölçeýäris

SLI gijikdirmeler: p50/p90/p95/p99 we p99 guýrugy. 9; "gyzgyn" we "sowuk" ýollar üçin aýratyn.
Hatalar: '5xx', '4xx' (dogry/dogry däl), timeouts, aborted.
Geçirijilik ukyby: durnukly RPS, throughput akymlary/baýt.
Çeşmeler: CPU, RAM/heap, GC-arakesmeler, disk IOPS/lat, tor bandwidth, birikmeleriň sany/FD.
Nobatlar we beklemek: çuňlugy, garaşmak wagty, soraglaryň sany/çäkli.
Keshiň netijeliligi: hit/miss, ýyladyş tupanlary.
BD/nagt pullar/nobatlar: p95 soraglar, blokirlemeler, gapma-garşylyklar, pool utilization.

4) Stendler we maglumatlar

Konfigurasiýa ekwiwalentligi: programma üpjünçiliginiň wersiýalary, çäkleri (uLimit, conntrack), JVM/GC konfigurasiýasy, pool's.
Topologiýa: LBs, CDN, WAF, TLS, şol bir tor "hoplary".
Maglumatlar: hakyky paýlanmalar (obýektleriň ölçegleri, "gyzgyn "/" sowuk "açarlar, sebitlilik).
Sowuk/ýyly/gyzgyn başlangyç: aýry-aýry geçişler; "sowuk" keşleri synagdan geçirmeli.
Fon izolýasiýasy: degişli däl joblary/kronlary öçürmek ýa-da olaryň täsirini göz öňünde tutmak.

5) Ssenariler (ýüküň profilleri)

1. Baseline: maksatly RPS-e tizlenmek, saklamak 10-30 minut.
2. Ramp & Hold: nyşandan ýokary X% -e çenli tekiz ösüş, saklamak → guýruk derňewi.
3. Spike: derrew × 2- × 5 1-5 minutda bökmek, soň bolsa gaýdyp gelmek.
4. Stress to Failure: şowsuzlyga çenli basgançaklar; SLO-nyň ýerine ýetirilmedik ilkinji nokadyny we "döwülen" nokady ýazýarys.
5. Soak: traffigiň üýtgemegi bilen 6-24 sagat (gije/gije), ýüzlere/süýşmä gözegçilik edýäris.
6. Mixed: hakyky paýlanyş boýunça endpointleriň garyndysy (Zipf/pareto), dürli agramlar.

6) Ädimme-ädim iş

SLO we maksatly traffik profillerini kesgitlemek.
Ýük modelini saýlaň (açyk/ýapyk), arrival-rate ýa-da VUs goýuň.
Maglumatlary we "gyzgyn "/" sowuk "reimesimleri taýýarla.
Telemetriýany (treýsler/metrikler/loglar), synag ýarasy bilen korelýasiýany sazla.
Gyzdyrmak we geçmek, artefaktlary ýygnamak (CPU/heap, flame graphs, explain/slow-logs DB profilleri).
Dar ýerleri seljermek, action items.
Fikslerden soň reprogon, bazline we capacity playbook täzelenýär.

7) Dar ýerler we adaty fiksler

CPU-bound hyzmaty: profillemek → gyzgyn funksiýalary, allokasiýalary, şahalary ýok etmek; wektorizasiýa, friendly gurluşlar.
Tor/TLS: keep-alive, HTTP/2/3, connection pooling, dogry wagtlar, söhbetdeşligiň azalmagy.
DB: indeksler, batchingler, taýýarlanan soraglar, konnektler howzy, R/W-bölmek, netijeleri kesmek, soraglary duplikasiýa etmek.
Nagt pullar: ululygy, TTL, request coalescing, tupan goragy, warming, sebit toplary.
Nobatlar/dellallar: ýakymly/paralellik çäkleri, batçlaryň ululygy, idempotent consumers, DLQ-potoloklar.
Garbatage/arakesmeler: GC sazlamak, buferleri kärendesine almak, object pooling akylly çäklerde.
I/O/disk: asinxron giriş/çykyş, gysyş, jogaplary akylly dereje bilen gysmak.

8) Çäkler we gorag

Wagtlaryň býudjeti: kaskadlardan gaça durmak üçin ýokardan aşak.
Rate limit/token-bakets: "uzak ölümiň" ýerine öňünden aýdyp boljak zaýalanma.
Circuit breaker we doýanda pes ileri tutulýan shading.
Backpressure: signallar we paralellik çäkleri.
Bulkheads: howuzlary möhüm endpointlere izolirlemek.
Idempotency: retralaryň aşagyndaky howpsuz gaýtalanmalar üçin açarlar.

9) Gurallar we olary haçan saýlamaly

k6 - JS lakoniki, arrival-rate, integrasiýa we grafalar üçin ajaýyp goldaw.
Gatling - Scala DSL, ýokary öndürijilikli generator.
JMeter - çeýe, ekosistemalara baý; Teswirnamalar/pluginler üçin amatly.
Locust - ulanyjy flowunyň çylşyrymly logikasy üçin amatly Python ssenarileri.
Vegeta/hey/wrk - HTTP-de mikrobençi we nokat aralyklary.
tc/netem, toxiproxy - tor zaýalanmalarynyň sanjymydyr.
Flamegraph/profiler - CPU/heap "gyzgyn ýerleri" gözlemek.

10) Mysallar (eskizler)

k6 (açyk model, endpoint mix)

javascript import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
scenarios: {
open_model: {
executor: 'constant-arrival-rate',
rate: 800, timeUnit: '1s', duration: '20m',
preAllocatedVUs: 500, maxVUs: 2000
}
},
thresholds: {
'http_req_duration{kind:hot}': ['p(95)<200'],
'http_req_failed': ['rate<0. 005']
}
};

export default function () {
const r = Math. random();
let res;
if (r < 0. 6) {
res = http. get('https://svc/api/hot', { tags: { kind: 'hot' }});
} else if (r < 0. 9) {
res = http. get('https://svc/api/warm', { tags: { kind: 'warm' }});
} else {
res = http. post('https://svc/api/heavy', JSON. stringify({ n: 1000 }), { headers: { 'Content-Type': 'application/json' }});
}
check(res, { 'status is 2xx': (r) => r. status >= 200 && r. status < 300 });
sleep(0. 2);
}

Gatling (ädimler we spike)

scala setUp(
scn. inject(
rampUsersPerSec(50) to 500 during (10 minutes),
constantUsersPerSec(500) during (20 minutes),
spikeUsers(2000). during(30. seconds)
)
). protocols(http. baseUrl("https://svc"))

Ýük meýilnamasy (YAML-skelet)

yaml profile: "mix-traffic"
targets:
- endpoint: GET /api/hot weight: 0. 6
- endpoint: GET /api/warm weight: 0. 3
- endpoint: POST /api/heavy weight: 0. 1 schedule:
- step: { rps: 300, hold: 10m }
- step: { rps: 600, hold: 10m }
- step: { rps: 900, hold: 10m }
guardrails:
slo:
p95_ms: 200 error_rate: 0. 5%
abort_if:
- metric: error_rate op: ">"
value: 2%
window: 2m

11) Awtomatlaşdyryş we durmuş aýlawy

Her PR-de perf-smoke (esasy endpointleriň gysga geçmegi).
Hasabatlar we profil artefaktlary bilen gijeki "capacity" geçişleri.
C/CD-de geýtlar: p95/p99 regressinde feýl bild> X bazline ýa-da error rate ýokarlananda%.
Bazlinleri wersiýalaşdyrmak we artefaktlar hökmünde profilleri/flemgraflary saklamak.
Degişli bellikler: haýsy hyzmat/endpoint örtülendir, haýsy traffik profili ulanylýar.

12) Anti-patternler

Bir maşynda generator we synag edilýän hyzmat → ýoýulan netijeler.
API-bellikler üçin diňe ýapyk model (VUs) → guýruklara kembaha garamak we nädogry baha bermek.
Sowuk başlamazdan boş DB/kesh boýunça geçişler.
Hakyky paýlamalaryň ýoklugy (ähli haýyşlar birmeňzeş).
Telemetriýa ýok (diňe RPS/latency generator tarapyndan).
Durnukly bazlinler we daşky gurşaw gözegçiligi bolmazdan deňeşdirme.
Sebäbini düzetmegiň ýerine uzaldylan wagt arkaly "optimizasiýa".

13) Arhitektoryň çek-sanawy

1. SLO we adaty/iň ýokary ýük kesgitlenildi?
2. Dogry model (open/closed) saýlandy we traffik profili boýaldyňyzmy?
3. Stend konfigurasiýa we topologiýa boýunça deňdir, sowuk/gyzgyn re regimeim barmy?
4. Telemetriýa we profiller goşuldy, synag ýarasynyň bellikleri goýulýarmy?
5. Purs: baseline/ramp/spike/stress/soak - örtülen?
6. Doýma nokatlary kesgitlenýärmi we ätiýaçlyk (safety margin) meýilleşdirilýärmi?
7. Çäklendirmeler, breýkerler, bekpreşer, idempotency, şeýding polisleri sazlandyňyzmy?
8. Regress p95/p99 we error rate üçin CI-geýtleri barmy?
9. Fikslerden soň - kuwwaty boýunça playbook reprogony we täzelenmesi?
10. Awto-masştabyň we adatdan daşary ýagdaýlaryň meýilnamasy resminamalaşdyryldymy?

Netije

Ýüklemek we stres-synag etmek bir gezeklik "ýaryş" däl-de, üznüksiz in engineeringenerçilik tejribesidir. CI/CD-de hakyky traffik modeli, dogry stendler, telemetriýa we awtomatlaşdyryş öndürijiligi "gizlin jadydan" metrikler tarapyndan dolandyrylýan ukyba öwürýär: potolokyňyzyň nirededigini, ätiýaçlygyň näderejede howpsuzdygyny we haýsy üýtgeşmeleriň ulanyjy tejribesini hakykatdanam gowulaşdyrýandygyny bilýärsiňiz.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.