GH GambleHub

Yuklamali test va stress

Yuklamali test va stress

1) Nima uchun bu zarur?

Maqsadlar:
  • Sig’imni tasdiqlash (tizim belgilangan SLOda qancha RPS/raqobat sessiyalariga bardosh beradi).
  • Shisha ogʻizlarni (CPU/IO/DB/tarmoqlar/blokirovkalar/pullar) topish.
  • CI/CD uchun ijro byudjetlari va «geytlar» ni moslash.
  • Relizlar xavfini kamaytirish (regressiya p95/p99, cho’qqida xatolar ko’payishi).
  • Sig’imni/qiymatni rejalashtirish (skeyl-aut va zaxiralar).

2) Perf-testlar turlari

Load (ish yuki): eng yuqori darajaga yaqin real trafik; SLO validatsiyasi.
Stress (stress): o’sish chegarasidan yuqoriga → buzilish paytida xatti-harakatlar, qayerda buziladi.
Spike (impuls): yukning tez sakrashi → elastiklik/avtoskeyl.
Soak/Endurance (davomli): soat/sutka → oqish, parchalanish, latency dreyfi.
Capacity/Scalability: scale-out paytida throughput/latency qanday o’zgaradi; Amdal/Gustafson qonuni.
Smoke perf: har bir relizda qisqa tutunli yugurish (spektakl-sanitari).


3) Trafikni hosil qilish modellari

Yopiq model (fixed VUs/concurrency):’N’foydalanuvchilar, har kim mijozda → navbat so’rovlar qiladi. Ortiqcha yukni yashirish xavfi.
Ochiq model (arrival rate): real hayotdagi kabi λ intensivligi (req/s) bo’lgan talabnomalar oqimi. Ommaviy API uchun yaxshiroq.

Littl qonuni:’L = λ × W’.
Pule/servis uchun: minimal parallellik ≈’λ × W’(zaxiraning 20-50% ni qo’shing).
Bu yerda’λ’- throughput,’W’- oʻrtacha xizmat koʻrsatish vaqti.


4) Yuklama profillari va ssenariylar

User journey mix: skriptlar ulushi (login, browse, deposit, checkout...).
Think-time: foydalanuvchining pauzalari (taqsimlash: eksponensial/lognormal).
Data profile: javoblar hajmi, payload, parametrlarning oʻzgaruvchanligi.
Korrelyatsiya: qadamlarni (cookie/tokenlar/ID) haqiqiy floudagidek bogʻlang.
Sovuq/issiq/issiq kesh: alohida progonlar.
Read vs Write: o’qish/yozuv balansi, retrajlar uchun idempotentlik.
Ko’p mintaqa: RTT, POP/ASN bo’yicha taqsimlash.


5) Test muhiti

Izolyatsiya: stend topologiya/moslamalar bo’yicha proyektga yaqin (lekin prod «urmaymiz»).
Ma’lumotlar: PII kamuflyajlash, hajmlar, indekslar mahsulotdagi kabi.
Yuk generatorlari: CPU/tarmoqqa tayanmaydi; taqsimlangan rannerlar, vaqtni sinxronlashtirish.
Kuzatish darajasi: metriklar/treyslar/loglar, perimetrda sintetika, CPU/heap profillarini eksport qilish.


6) Metrika va SLI

Throughput: sekundiga RPS/tranzaksiyalar.
Latency: p50/p95/p99, TTFB, server time vs network.
Errors: 5xx/4xx/domen xatolari ulushi.
Saturation: CPU, load avg, GC, diskli IOps/latentlik, network, pool wait.
Biznes-SLI: depozitning muvaffaqiyati ≤ 5s, buyurtmaning tasdiqlanishi ≤ 2s.

Chegarani SLO dan oling (masalan, "99. 95% ≤ 300 ms").


7) Tor joylarni qidirish (metodika)

1. Tizimni maqsadli yuklamaning 60-80 foiziga barqaror isiting.
2. Qadamlar bilan kattalashtiring (ramp) → p95/p99 va error-rate o’sadigan joyni belgilang.

3. p99 portlashlarini quyidagilar bilan solishtiring:
  • (DB/HTTP),
  • WAIT/lokov (DB) o’sishi,
  • GC pauzalari/heap,
  • tarmoq retransmits/packet loss,
  • disk latentligi/kesh xatolari.
  • 4. Mahalliylashtiring: soʻrov yoʻli boʻyicha ikkilik qidiruv, profil moslamalari (CPU/alloc/lock-profile).
  • 5. «Shishani» tuzating → sozlash → takrorlash.

8) Stress ostida xulq-atvor

Graceful degradation: limitlar, circuit-breakers, backpressure navbatlari, «qayta ishlashga qabul qilindi».
Retraylar: ko’pi bilan 1 ta, faqat idempotentlar; jitter; retray budjeti ≤ RPSning 10 foizi.
Fail-open/Fail-closed: tanqidiy boʻlmagan bogʻliqliklar uchun, fail-open (kesh/boʻshliqlar) ga ruxsat bering.
Cascading failure: pullar/kvotalar izolyatsiyasi (bulkhead), tezkor taymautlar, funksiyalarning «silliq» uzilishi (feature flags).


9) Asboblar (vazifa uchun tanlash)

k6 (JavaScript, ochiq/ochiq-model, tezkor, CI uchun qulay).
JMeter (ekotizimga boy, GUI/CLI, plaginlar, ammo og’irroq).
Gatling (Scala DSL, yuqori unumdorlik).
Locust (Python, skriptlarning moslashuvchanligi).
Vegeta/hey/wrk (mikro-benchi va tezkor tekshirish).

Qoida: bitta «asosiy» vosita + PRdagi smoke-perf uchun engil CLI.


10) Misollar (snippetlar)

10. 1 k6 (arrival rate bilan ochiq model)

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 (profil gʻoyasi)

Thread Group + Stepping Thread или Concurrency Thread (open-like).
HTTP Request Defaults, Cookie Manager, CSV Data Set.
Backend Listener → InfluxDB/Grafana; Assertions vaqt/kod boʻyicha.

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) Ma’lumotlar, korrelyatsiya, tayyorgarlik

Seed-ma’lumotlar: kataloglar, foydalanuvchilar, balanslar, tokenlar - nasldagi kabi.
PIIni niqoblash/anonimlashtirish; haqiqiy taqsimotlar ustidan sintetika ishlab chiqarish.
Korrelyatsiya: javoblardan ID/tokenlarni chiqarib oling (RegExp/JSONPath) va keyingi bosqichlarda foydalaning.


12) Haydash vaqtida kuzatish

Yo’nalishlar bo’yicha RED-dashbordlar (Rate, Errors, Duration).
Exemplars: metrikadan trassalarga oʻtish (trace_id).
Xato loglari: sampling + agregatsiya, dublikatlar/idempotentlik.
Tizimlar: CPU/GC/heap, disklar/tarmoq, pool wait.
DQ: top-so’rovlar, blokirovkalar, indeks-skanlar, bloat.


13) Avtomatlashtirish va spektakl-geytlar

CI: merge (masalan, k6 2-3 daqiqa) uchun qisqa pog’onalar.
Nightly/Weekly: uzoq soak/stress alohida muhitda; hisobotlar va trendlar.
Kanareya relizlari: SLO (error-rate, p95) ni reklama «geyti» sifatida tahlil qilish.
Regressiyalar: baseline vs joriy bild; yomonlashganda alertlar> X%.


14) Sig’imni rejalashtirish va qiymati

Egri chiziqlar throughput → latency: knee point (tizza) ni aniqlang - undan keyin p99 keskin o’sadi.
Skayl-out: oʻlchash samaradorligini oʻlchang (delta RPS/delta tugunlari).
Qiymati: «$/soat uchun RPS», eng yuqori hodisalar uchun zaxira + DR-zaxira.


15) Anti-patternlar

Prodni nazoratsiz urish yoki prodga o’xshamaydigan «bo’sh» muhitda sinovdan o’tkazish.
Ortiqcha yukni yashiradigan VU bilan yopiq model.
Think-time/ma’lumotlarning yo’qligi → keshning haqiqiy bo’lmagan xitlari yoki aksincha - manbalarga bo’ron.
Foydalanuvchi flowlari oʻrniga bitta «/ping »skripti.
Kuzatishning yo’qligi: «Biz faqat RPS va o’rtacha kechikishni ko’ramiz».
Nazoratsiz retralar → o-DDoS.
Gipotezalar/o’zgarishlarni qayd etmasdan xamir va optimallashtirishlarni aralashtirish.


16) Chek-varaq (0-30 kun)

0-7 kun

SLI/SLO va maqsadli trafik profillarini (mix, think-time, maʼlumotlar) aniqlang.
Asbobni tanlang (k6/JMeter/Locust).
Stend va seed ma’lumotlarini tayyorlang, uchinchi tomon limitlari/kaptchalarini o’chirib qo’ying.

8-20 kun

Stsenariylarni yarating: open-model (arrival rate), sovuq/issiq/issiq kesh.
load → stress → spike dasturini ishga tushiring; knee point va tor joylarni oʻrnating.
CI (mikro-progon) ga spektakl-geytlarni kiriting.

21-30 kun

Soak-test 4-24 soat: oqish/dreyf GC, barqarorlashtirish.
Chegaralarni, sig’imlar rejasini, «RPS → p95/xatolar» rasmlarini hujjatlashtiring.
Runbook’cheklov/skayl’ni qanday oshirishni va’degradatsiya qilishni’tayyorlang.


17) Etuklik metrikasi

Traffikning 80% ≥ qoplaydigan real profillar (mix, think-time, maʼlumotlar) mavjud.
Barcha testlar uchun RED dashbordlari + trassasi ulangan.
P95/xato regressiyasida spektakllar relizlarni bloklaydi.
Sigʻim va knee point asosiy xizmatlar boʻyicha hujjatlashtirilgan.
Har oylik soak/stress-progonlar va dinamika bo’yicha hisobotlar.
«Spike» ga chidamliligi avtoskayl va cascade-fail yoʻqligi bilan tasdiqlangan.


18) Xulosa

Yuklama sinovi - bu bir martalik «o’lchash» emas, balki muntazam muhandislik amaliyotidir. Haqiqiy foydalanuvchilarni (open-model) modellashtiring, mijozning tajribasini (SLI/SLO) aks ettiradigan narsalarni o’lchang, CI/CD’da kuzatish va «geytalar» ni saqlang, stress/spike/soak-progonlarni o’tkazing va knee point-ni qayd qiling. Shunda eng yuqori darajadagi voqealar va «qora oqqushlar» boshqariladigan stsenariylarga, ishlab chiqarish esa platformaning oldindan aytib bo’ladigan va o’lchanadigan parametriga aylanadi.

Contact

Biz bilan bog‘laning

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

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.