GH GambleHub

Yuklama testlari va stress-profillar

Qisqacha xulosa

Yuklama sinovi - bu real va ekstremal stsenariylar ostida unumdorlik va barqarorlikni tizimli tekshirishdir. Muvaffaqiyat asosi: toʻgʻri trafik modeli (open vs closed), oʻrnatilgan SLO, sof metrika (latency/throughput/xato/toʻyinish), reprezentativ maʼlumotlar, avtomatlashtirish va takrorlanuvchanlik. Natija «RPS raqami» emas, balki yechim: tor joylar qayerda, unumdorlik qancha turadi, nosozlik chegarasi qayerda va uni qanday siljitish kerak.

SLO/SLI va maqsadli metriklar

SLO (misol): p95 API ≤ 250 ms, p99 ≤ 600 ms; xato ≤ 0. 3 %/30 kun.
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).
Xato budjetlari va Saturation-triggerlar (masalan, CPU> 75% yoki queue depth> X → degradatsiya).

Test turlari

1. Baseline/Benchmark - yagona xizmat/endpoint, «ideal» sharoitlar.
2. Load - real «ish kuni» + ramp-up/ramp-down.
3. Stress - yukni tanazzul va breakpoint fiksatsiyasigacha oshiramiz.
4. Spike - keskin sakrash (soniya/daqiqada x2-x10).
5. Soak/Endurance - uzoq vaqt yurish (8-72 soat): xotira oqishi, latentlik dreyfi.
6. Capacity - ishlab chiqarish egri chizig’ini yaratish va sig’imni rejalashtirish uchun bosqichli yuk.
7. Degradation/Chaos-mix - yuk + qisman nosozliklar (sekinlashgan DB, keshning yiqilishi, «qulagan» aplink).

Trafik modellari: Open vs Closed

Open model (Internet uchun realdir): foydalanuvchilar λ intensivligi (Poisson - shunga oʻxshash oqim) bilan kelishadi. Agar tizim sekinlashsa, soʻrovlar «muzlatib qoʻyilmaydi».
Closed model: think-time bilan belgilangan virtual foydalanuvchilar soni (VU). Kechikish ko’payganda, RPS sun’iy ravishda tushadi - xulosalar bilan ehtiyot bo’ling.
Tavsiya: front API uchun open model (k6’arrival-rate’), ichki sinxron skriptlar uchun closed bilan birlashtiring.

Yuklash profillari (namunalar)

«Oddiy kun»: asosiy fon + kunlik tebranishlar.
«Pik-ivent»: startdan 10-30 daqiqa oldin (isitish), startda keskin spike, plato, dumi.
«Turnir/oqim»: zinapoyalar lesenkasi, intervallarda takroriy cho’qqilar.
«Infratuzilma degradatsiyasi»: keshning yarmi bo’sh, bitta hudud o’chirilgan, PSP latentligini oshirish.
«Failover»: trafik 1-5 daqiqada zaxiraga oqadi; avto-skeylni/HPA/Retry-bo’ronlarni tekshiramiz.

Ma’lumotlar va atrof muhitni tayyorlash

Test ma’lumotlari: realistik kardinalitet (provayderlar, valyutalar, mamlakatlar), «iflos» maydonlar, so’rovlarni taqsimlash (Pareto/Zipf).
Sirlar/PII: anonimlashtirish; / PSP - sandbox.
Atrof-muhit: ajratilgan perf-stend, integratsiyalardan izolyatsiya (mock/stab), belgilangan versiyalar.
Kuzatilganlik: metriklar (Prometheus), loglar (Loki/ELK), trassalar (OTel). Javoblarda build-id’ni belgilang.

Retraylarning antishtormasi va idempotentligi

Retrai faqat idempotent operatsiyalari uchun; retry-budget (masalan, trafikning 10% ≤).
Exponential backoff + jitter; «collapsing» bir xil GET.
To’lovlar uchun - idempotent kalitlari va aniq maqomlar.
thundering herd: kesh-loki, SWR, lokal semaforlardan himoya qilish.

Asboblar va patternlar

k6 (skript, open-model, yaxshi hisobotlar), Locust (Python-stsenariylari), Gatling (Scala), JMeter (keng qamrovli protokollar).
Bayonnomalar: HTTP/1. 1/2/3, gRPC, WebSocket, TCP/UDP; server-push «GET kabi» sinab ko’rmang.
Trafikni ishlab chiqarish: generatorlarni gorizontal masshtablash, tor joyni nazorat qilish.
Profil olish: pprof/async-profiler/ebpf, OTel trassalari.

k6 mini-namunasi (open-model + 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)
}

O’tkazish metodikasi

1. Gipoteza → qanday tor joylar bo’lishi mumkin (CPU, DB, kesh, tarmoq, TLS, GC).
2. Profil → skriptlar/yo’nalishlar, trafik ulushlari, modellar (open/closed), ma’lumotlar.
3. Isitish → kesh/konnektlar/TLS/interpretatorlar.
4. Bosqichning maqsadli intensivligigacha o’sishi.
5. Plato → barqaror metrika va trassalarni yig’ish.
6. Stress/pasayish → sinish nuqtasini qidirish, avto-skeylni kuzatish.
7. Tahlil → Metrik korrelyatsiya, flamegraph, hisobot va o’zgarishlar rejasi.
8. Reprut → paypline CI (Regression Perf) orqali takrorlash.

Natijalarni tahlil qilish

«Yuk → kechikish/xato» egri chizig’i: tizzani qidirish (capacity).
Breakdown latentlik: tarmoq (DNS/TLS/connect), proksi, ilova, DB, tashqi qoʻngʻiroqlar.
To’yinganlik: CPU> 75-85%, GC pause> p95, I/O kutish, vazifalar navbati.
Elastiklik: avtoskeyl reaksiyasi vaqti (HPA/KEDA), «sovuq start», keshni isitish.
Qiymati: maqsadli SLOda $/1000 RPS, eng yuqori darajaga budjet prognozi.

Muhandislik amaliyotlari

Degradatsiya indikatorlari: «dumlar» p99, navbatlar ko’payishi, hit-ratio tushishi, retraylar ko’payishi.
Fayl deskriptorlari, sysctl, conn-pool,’reuseport’, TLS zanjirlari, OCSP chegaralarini istisno qiling.
DB: indekslar/rejalar/so’rovlar keshi, ulanishlar puli, batch-operatsiyalar, prodyuserlarga backpressure.
Keshlar: oʻlcham/eviction-siyosat, issiq kalitlar, replikatsiyalar.
Tarmoq/edge: HTTP/2/3, resumption ≥ 70%, Brotli, CDN-key, tiered-cache.

Yuk ostida kuzatish

Metriklar: tizimli (CPU/mem/IO), runtime (GC/heap), tarmoq (RTT/loss/ECN), L7 (p95/99, 5xx/429), navbatlar, DB/kesh klasterlari.
Treyslar: «dumlar» (tail-based), build-id/kanareyka belgilariga semplash kiritiladi.
Loglar: hajm chegarasi bilan xatolarni yig’ish («zaDOSili» log-paypayn bo’lmasligi uchun).
Tajribalar: feature-flags va konfiglar hisobotda qayd etilishi kerak.

Avtomatlashtirish va CI/CD

Perf-jobs v CI (smoke 3-5 min, nightly 30-60 min, weekly soak).
Chegaralar: yashirin/xato/resurslar → regressiya paytida «bild» ni buzish.
Artefaktlar: grafiklar, flamegraphs, profillar, JSON hisobotlari (k6/jtl).
Ma’lumotlar va ssenariylarni versiya qilish, perf-skriptlarni PR-review qilish.

iGaming/fintech uchun o’ziga xos

Turnirlar/o’yinlar: spike + plateau; TLS/DNS/CDN isitish, pullarning yuqori limitlari, botlar uchun «kulrang» yo’nalishlar.
To’lovlar/PSP: sandbox-limitlar, idempotentlik, qat’iy taymautlar; degrade-mode (maʼlumotnoma kesh, navbat) ni tekshirish.
Jekpotlar/eventlar: atomarlik va ketma-ketlik, dubllar yo’qligi, RNG/liderbordga yuk.
Antifrod/AML: qoidalarga yuk/ML-skoring, backpressure, hodisalarning deduplikatsiyasi.
Tartibga solish: metrika va versiyalarni eng yuqori cho’qqilarda loglash, audit uchun hisobotlar.

Ishga tushirish chek varaqasi

  • SLO/SLI va «qizil chiziqlar» qayd etilgan (xato/yashirin/to’yinganlik).
  • Skriptlar va yuklash profillari tasdiqlangan (open/closed, spike/soak/stress).
  • Ma’lumotlar realistik, PII niqoblangan, integratsiyalar - sandbox/mock.
  • Kuzatish tayyor: metriklar/treyslar/loglar, reliz teglari.
  • Tizimlar konfigurasi (ulimit/sysctl/pools) hujjatlashtirilgan.
  • Avto-skeyl/kesh isitish rejasi va rollback mezonlari.
  • Chegara alertlari va jamoalarning aloqa rejasi (on-call).
  • Hisobot namunasi (grafiklar, xulosalar, harakatlar) tayyorlandi.

Tipik xatolar

Closed-model testi «yashil» natija beradi va prod tushadi (open-modelni e’tiborsiz qoldirib bo’lmaydi).
Noreprezentativ ma’lumotlar (bitta valyuta/bitta provayder) → yolg’on xulosalar.
Nol tayyorgarlik: sovuq keshlar/TLS/konnektlar → boshlanishi ortiqcha latentlik.
Limitsiz retraylar → bo’ron va kaskadli tushishlar.
Barcha xizmatlar uchun bir xil profillar → haqiqiy «issiq nuqtalarni» oʻtkazib yuborish.
Soak-progonlar yo’qligi → xotira oqishi va dreyf ko’rinmaydi.
Shaffof bo’lmagan natijalar: trassalar/fleymgraflar yo’q → tor joyni mahalliylashtirish mumkin emas.

Mini-pleybuklar

Cheklangan o’tkazish qobiliyatini aniqlash (breakpoint)

1. Har 5-10 daqiqada 10-20% yuklamali bosqichlar 2) P95 va xatolar keskin o’sadigan lahzani yozib oling> SLO. 3) CPU/DB/kesh profillarini olib tashlang. 4) Optimallashtirish rejasi va takrorlash.

Retray bo’ronlarini to’xtatish

1. Retry-budget ni cheklash va backoff + jitterni yoqish. 2) request-collapsing/SWR kiritilsin. 3) «Degrad-rejim» ga (cheklangan funksionallik) ruxsat berilsin. 4) idempotentlikni qayta tekshirish.

Pik-event (turnir) - oldindan reja

1. CDN/DNS/TLS/pulalarni isitish. 2) HPAni ko’paytirish, zaxirani tayyorlash. 3) Botlar uchun alohida rate-limitlar. 4) «pik-rejim» dashbordlari, on-call aloqa ko’prigi.

Soak night

1. 8-12 soat barqaror yuklash. 2) Monitorim heap/FD/conn/GC-pauses. 3) Delta p95 va hit-ratio ni solishtiramiz. 4) Oqish va driftni qayd etamiz.

Jami

Yuk sinovi - bu «RPS uchun poyga» emas, balki muhandislik qarorlarini qabul qilish jarayonidir. Haqiqiy profillarni (ayniqsa open-model) modellashtiring, SLOni tuzating, metrik va trassalarni olib tashlang, ishlash tizzasini qidiring va ishlash narxini hisoblang. Pogonlarni avtomatlashtiring, retrajga qarshi bo’ronni ushlab turing va eng shiddatli paytlarda platforma oldindan aytib bo’ladigan va barqaror bo’lishini rejalashtiring.

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.