GH GambleHub

Yuklama va stress-test

1) Atamalar va maqsadlar

Load test - SLO (masalan, p95 <200 ms, error rate <0) ga qarshi ish oralig’ida (target RPS/raqobatbardoshlik) tekshirish. 5%).
Stress test - chegaradan chiqish (CPU/DB/tarmoq to’yinganligiga qadar/undan ortiqcha), degradatsiya va tiklanish mexanikasini kuzatish.
Spike test - yuklamaning keskin portlashlari (daqiqa davomida N ×).
Soak/Endurance - oqish, GC drifti, parchalanish, navbat o’sishini qidirish uchun uzoq vaqt (soat/sutka).
Capacity test - plato o’tkazish qobiliyati (saturation point) va zaxiralarni hisoblash.

Maqsadlar: SLOni tasdiqlash, platoni tuzatish, tor joylarni tushunish, avto-masshtablash va limitlarni kalibrlash.

2) Trafik modeli: ochiq vs yopiq

Yopiq model (concurrency-driven): virtual foydalanuvchilarning belgilangan soni (VUs), har biri javobdan keyin think time qiladi.
Ochiq model (arrival-rate): javoblardan qat’i nazar, so’rovlarning belgilangan intensivligi (RPS).

💡 Prodda ko’pincha «ochiq» dunyo (foydalanuvchilar qanday kelsalar, shunday kelishadi), shuning uchun API/veb-beklar uchun arrival rate modellashtirish ustuvordir.

Little’s Law: `L = λ W`

’L’ - bir vaqtning o’zida xizmat ko’rsatiladigan so’rovlarning o’rtacha soni,

’λ’ - intensivlik (RPS),

’W’ - o’rtacha javob vaqti.
Demak, "concurrency ≈ target_RPS p95_latency'.

3) Metrika: nimani o’lchaymiz

SLI kechikish: p50/p90/p95/p99 va p99 dumi. 9; «issiq» va «sovuq» yo’llar uchun alohida.
Xatolar:’5xx’,’4xx’(valid/nevalid), timeouts, aborted.
O’tkazish qobiliyati: barqaror RPS, throughput/bayt.
Resurslar: CPU, RAM/heap, GC pauzalari, diskli IOPS/lat, tarmoq bandwidth, ulanishlar soni/FD.
Navbatlar va bekorchi: chuqurlik, kutish vaqti, so’rovlar soni.
Kesh samaradorligi: hit/miss, isitish boʻronlari.
BD/kesh/navbatlar: p95 so’rovlar, blokirovka, mojarolar, pool utilization.

4) Stendlar va ma’lumotlar

Konfiguratsiya ekvivalentligi: dasturiy ta’minot versiyalari, limitlar (uLimit, conntrack), JVM/GC konfiguratsiyasi, pool’lar.
Topologiya: LBs, CDN, WAF, TLS, xuddi shu tarmoq «xoplari».
Ma’lumotlar: realistik taqsimotlar (obyektlarning o’lchamlari, «issiq «/» sovuq »kalitlar, hududiylik).
Sovuq/issiq/issiq start: alohida progonlar; «sovuq» keshlarni sinab ko’rish shart.
Orqa fon izolyatsiyasi: ahamiyatsiz joblar/kronomalarni o’chirish yoki ularning ta’sirini hisobga olish.

5) Ssenariylar (yuklama profillari)

1. Baseline: maqsadli RPSgacha bosqichma-bosqich tezlashtirish, ushlab turish 10-30 daqiqa.
2. Ramp & Hold: Maqsaddan yuqori X% gacha silliq o’sish, quyruqlarni ushlab turish → tahlil qilish.
3. Spike: bir zumda × 2- × 1-5 daqiqa davomida 5 ta sakrash, so’ngra qaytish.
4. Stress to Failure: rad etishgacha bo’lgan bosqichlarda; SLO bajarilmasligining birinchi nuqtasi va «sinish» nuqtasini qayd etamiz.
5. Soak: trafikning o’zgaruvchanligi (kun/tun) bilan 6-24 soat, yuzlar/driftni kuzatib boramiz.
6. Mixed: haqiqiy taqsimot bo’yicha endpint aralashmasi (Zipf/pareto), turli og’irliklar.

6) Bosqichma-bosqich jarayon

SLO va maqsadli trafikni aniqlash.
Yuklash modelini tanlash (ochiq/yopiq), arrival-rate yoki VUs.
Maʼlumotlar va «issiq «/» sovuq »rejimlarni tayyorlash.
Telemetriyani (treys/metrika/logi), test-ran bilan korelatsiyani moslash.
Isitish va haydash, artefaktlarni to’plash (CPU/heap, flame graphs, explain/slow-logs DB profillari).
Tor joylarni tahlil qilish, action items shakllantirish.
Fixlardan keyingi reprogon, bazlayn va capacity playbook yangilanmoqda.

7) Tor joylar va tipik fikslar

CPU-bound servis: profillash → issiq funksiyalar, allokatsiyalar, tarmoqlarni bartaraf etish; vektorizatsiya, kesh-friendly tuzilmasi.
Tarmoq/TLS: keep-alive, HTTP/2/3, connection pooling, to’g’ri taymautlar, chatlar soni kamayadi.
DQ: indekslar, batchinglar, tayyorlangan so’rovlar, konnektlar puli, R/W bo’linishi, natijalarni keshlash, so’rovlarni deduplikatsiya qilish.
Keshlar: o’lcham, TTL, request coalescing, bo’ron himoyasi, warming, mintaqaviy sharlar.
Navbatlar/brokerlar: do’stlik/parallellik limitlari, batch o’lchami, idempotent consumers, DLQ-shiftlar.
Garbatedj/pauzalar: GC tyuning, buferlarni ijaraga olish, object pooling.
I/O/disk: asinxron kirish/chiqish, siqish, javoblarni oqilona darajada siqish.

8) Limitlar va himoya

Budget taymautlari: kaskadlardan qochish uchun yuqoridan pastga.
Rate limit/token-baketalar: «uzoq o’lim» o’rniga oldindan aytib bo’ladigan tanazzul.
Circuit breaker va to’yinganlik ustuvorligi past.
Backpressure: signallar va parallellikni zanjirning ichiga cheklash.
Bulkheads: pullarni kritik endpointlar ostida izolyatsiya qilish.
Idempotency: retralar ostida xavfsiz takrorlash uchun kalitlar.

9) Asboblar va ularni qachon tanlash

k6 - lakonik JS, arrival-rate, integratsiya va grafikni juda yaxshi qo’llab-quvvatlash.
Gatling - Scala DSL, yuqori unumli generator.
JMeter - egiluvchan, ekotizimga boy; protokollar/plaginlar uchun qulay.
Locust - foydalanuvchi floularining murakkab mantig’i uchun qulay bo’lgan Python stsenariylari.
Vegeta/hey/wrk - HTTP da mikrobenchi va nuqta progonlari.
tc/netem, toxiproxy - tarmoq degradatsiyalarini in’ektsiya qilish.
Flamegraph/profiler - CPU/heap «issiq joylarni» qidirish.

10) Misollar (eskizlar)

k6 (ochiq 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 (bosqich va 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"))

Yuklash rejasi (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) Avtomatlashtirish va hayot sikli

Perf-smoke har bir PRda (kalit endpointlarning qisqa prognozi).
Hisobotlar va profil artefaktlari bilan steyjdagi tungi «capacity» pog’onalari.
SI/CD geytlari: p95/p99> X regressi bazlayn yoki error rate o’sishida.
Bazlinlarni versionlash va profil/fleymgraflarni artefaktlar sifatida saqlash.
Relevantlik teglari: qaysi xizmat/endpoint qoplangan, qaysi trafik profilidan foydalanilgan.

12) Anti-patternlar

Bitta mashinada generator va sinovdan o’tkaziladigan xizmat → buzilgan natijalar.
Faqat yopiq model (VUs) uchun API-beklar → dumlarini kamaytirish va noto’g’ri baholash.
Boʻsh DB/kesh boʻyicha sovuqni boshlamagan progonlar.
Real taqsimotlarning yo’qligi (barcha so’rovlar bir xil).
Telemetriya yoʻq (faqat RPS/latency generator tomonidan).
Barqaror bazlaynlarsiz va muhitni nazorat qilmasdan taqqoslash.
Sababni tuzatish o’rniga ko’paytirilgan vaqt orqali «optimallashtirish».

13) Arxitektorning chek-varaqasi

1. SLO va namunaviy/eng yuqori yuk aniqlanganmi?
2. Toʻgʻri model (open/closed) tanlanganmi?
3. Stend konfiguratsiya va topologiya bo’yicha ekvivalentdir, sovuq/issiq rejim bormi?
4. Telemetriya va profillar yoqilgan, test-yara belgilari qo’yilyaptimi?
5. Dasturlar: baseline/ramp/spike/stress/soak - qoplanganmi?
6. Toʻyinish nuqtalari aniqlanyaptimi va zaxira (safety margin) rejalashtirilyaptimi?
7. Limitlar, breykerlar, bekpresher, idempotency, sheyding polislari oʻrnatilganmi?
8. p95/p99 regress va error rate uchun CI-geytlar bormi?
9. Fixlardan so’ng - quvvati bo’yicha playbook’ni qayta tarqatish va yangilash?
10. Avto-masshtablash va avariya rejimlari rejasi hujjatlashtirilganmi?

Xulosa

Yuklash va stress-test - bu bir martalik poyga emas, balki uzluksiz muhandislik amaliyoti. Haqiqiy trafik modeli, to’g’ri stendlar, telemetriya va CI/CDdagi avtomatlashtirish samaradorlikni «sirli sehr» dan metrik boshqariladigan qobiliyatga aylantiradi: siz shiftingiz qayerda ekanligini, zaxirangiz qanchalik xavfsiz ekanligini va qanday o’zgarishlar foydalanuvchi tajribasini yaxshilashini bilasiz.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.