GH GambleHub

Yük testi və stress profilləri

Qısa xülasə

Yükləmə testi real və ekstremal ssenarilər altında performans və sabitliyin sistem testidir. Uğurun əsası: düzgün trafik modeli (open vs closed), sabit SLO, təmiz metrika (latency/throughput/səhvlər/doyma), təmsilçi məlumatlar, avtomatlaşdırma və təkrarlanabilirlik. Nəticə «RPS rəqəmi» deyil, həll yoludur: dar yerlər haradadır, məhsuldarlıq nə qədərdir, nasazlıq həddi haradadır və onu necə hərəkət etdirmək olar.

SLO/SLI və hədəf metriklər

SLO (nümunə): p95 API ≤ 250 ms, p99 ≤ 600 ms; səhv ≤ 0. 3 %/30 gün.
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).
Səhv bujetləri və Saturation tetikleyiciləri (məsələn, CPU> 75% və ya queue depth> X → deqradasiya).

Test növləri

1. Baseline/Benchmark - tək xidmət/end-point, «ideal» şərtlər.
2. Load - real «iş günü» + ramp-up/ramp-down.
3. Stress - deqradasiya və breakpoint fiksasiya qədər yükü artırın.
4. Spike - kəskin sıçrayış (saniyədə x2-x10).
5. Soak/Endurance - uzun qaçış (8-72 saat): yaddaş sızması, gecikmə sürüklənməsi.
6. Capacity - performans əyrisi qurmaq və tutumu planlaşdırmaq üçün addım yüküdür.
7. Degradation/Chaos-mix - yük + qismən nasazlıqlar (yavaşlayan DD, cache düşməsi, «çökmüş» aplink).

Trafik modelləri: Open vs Closed

Open model (internet üçün daha real): istifadəçilər λ intensivliyi ilə gəlir (Poisson kimi axın). Sistem ləngiyirsə, sorğular «dondurulmur».
Closed model: think-time ilə virtual istifadəçilərin (VU) sabit sayı. Gecikmə artdıqda, RPS süni şəkildə düşür - nəticələrlə diqqətlə.
Tövsiyə: Ön API üçün açıq modeldən (k6 'arrival-rate') istifadə edin, daxili sinxron ssenarilər üçün - closed ilə birləşdirin.

Yükləmə profilləri (şablonlar)

«Normal gün»: əsas fon + gündüz dalğalanmaları.
«Pik-event»: başlamazdan 10-30 dəqiqə əvvəl (qızdırma), başlanğıcda kəskin spike, plato, quyruq.
«Turnir/axın»: pillələr, fasilələrlə təkrar zirvələr.
«Infrastruktur deqradasiyası»: yarım cache boş, bir region qapalı, PSP gecikmə artımı.
«Failover»: trafik 1-5 dəq ehtiyata axır; avto skayl/HPA/Retry fırtınaları yoxlayın.

Məlumat və mühit hazırlığı

Test məlumatları: real kardinallıq (provayderlər, valyutalar, ölkələr), «çirkli» sahələr, sorğu bölgüsü (Pareto/Zipf).
Sirləri/PII: anonimləşdirmə; açarları/PSP - sandbox.
Mühit: xüsusi perf-stand, inteqrasiya izolyasiyası (mock/stub), sabit versiyalar.
Müşahidə: metriklər (Prometheus), Loki (Loki/ELK), marşrutlar (OTel). Cavablarda build id qeyd edin.

Antishtorm retraj və idempotentlik

Retrai yalnız idempotent əməliyyatlar üçün; retry-budget (məsələn, trafikin ≤ 10% -i) qoyun.
Exponential backoff + jitter; «collapsing» eyni GET.
Ödənişlər üçün - idempotent açarları və açıq statuslar.
thundering herd qorunması: cash-loki, SWR, yerli semaforlar.

Alətlər və nümunələr

k6 (script, open-model, yaxşı hesabatlar), Locust (Python-ssenarilər), Gatling (Scala), JMeter (geniş protokollar).
Protokollar: HTTP/1. 1/2/3, gRPC, WebSocket, TCP/UDP; server-push «GET kimi» test etməyin.
Trafik generasiyası: generatorların üfüqi miqyaslandırılması, şəbəkə dar yerə nəzarət.
Profil çıxarılması: pprof/async-profiler/ebpf yük altında, OTEL yolları.

Mini-nümunə k6 (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)
}

Aparma metodikası

1. Hipotez → hansı dar yerlər ehtimal olunur (CPU, BD, cache, network, TLS, GC).
2. Profil → ssenarilər/marşrutlar, trafik payları, modellər (open/closed), məlumatlar.
3. Qızdırma → cache/konnektlər/TLS/interpretatorlar.
4. hədəf intensivliyinə → mərhələ artım.
5. Plato → sabit metrik və trasların toplanması.
6. Stress/tənəzzül → sınıq nöqtəsinin axtarışı, avtomatik skeylin izlənməsi.
7. Analiz → metrik korrelyasiya, flamegraph, hesabat və dəyişiklik planı.
8. Reprut → paypline CI (Regression Perf) vasitəsilə təkrar.

Nəticələrin təhlili

«Yük → gecikmə/səhv» əyrisi: diz (capacity) axtarırıq.
Gizli fasilə: şəbəkə (DNS/TLS/connect), proxy, app, DD, xarici zənglər.
Doyma: CPU> 75-85%, GC pause> p95, I/O gözləmə, vəzifə növbəsi.
Elastiklik: avtoskeyl reaksiya vaxtı (HPA/KEDA), «soyuq başlanğıc», cache qızdırılması.
Dəyəri: hədəf SLO ilə $/1000 RPS, pik büdcə proqnozu.

Mühəndislik təcrübələri

Deqradasiya göstəriciləri: «quyruqlar» p99, növbələrin böyüməsi, hit-ratio düşməsi, retraj cəhdlərinin artması.
Konfaunderləri istisna edin: fayl deskriptorlarının limitləri, sysctl, conn-pool, 'reuseport', TLS zəncirləri, OCSP.
BD: indekslər/planlar/sorğu cache, qoşulma hovuzu, batch əməliyyatları, istehsalçılar üçün backpressure.
Caches: ölçüsü/eviction siyasəti, isti açarları, replikasiyalar.
Şəbəkə/edge: HTTP/2/3, resumption ≥ 70%, Brotli, CDN açarı, tiered-cache.

Yük altında müşahidə

Metriklər: sistem (CPU/mem/IO), runtime (GC/heap), şəbəkə (RTT/loss/ECN), L7 (p95/99, 5xx/429), növbələr, DB/cache klasterləri.
Traces: «quyruqlar» (tail-based), build-id/kanareyka işarələri.
Log: həcm məhdudiyyəti ilə səhvlərin yığılması («zaDOS» və ya «log-paypline» deyil).
Təcrübələr: feature-flags və konfiqlər hesabatda qeyd edilməlidir.

Avtomatlaşdırma və CI/CD

CI Perf-jobs (smoke 3-5 dəq, nightly 30-60 dəq, weekly soak).
Giriş sərhədləri: gecikmə/səhvlər/resurs → reqressiya zamanı «bild» qırmaq.
Artefaktlar: qrafiklər, flamegraphs, profillər, JSON hesabatları (k6/jtl).
Verilənlərin və ssenarilərin versiyası, perf skriptlərin PR review.

iGaming/Fintech üçün xüsusiyyətlər

Turnirlər/matçlar: spike + plateau; TLS/DNS/CDN istiləşməsi, artan hovuz limitləri, botlar üçün «boz» marşrutlar.
Ödənişlər/PSP: sandbox limitləri, idempotentlik, ciddi vaxtlar; degrade-mode yoxlama (referans cache, növbələr).
Jackpotlar/tədbirlər: atom və ardıcıllıq, ikiqat yoxdur, RNG/liderlik bordlarına yük.
Antifrod/AML: qaydalara yük/ML-skoring, backpressure, hadisələrin təkrarlanması.
Tənzimləmə: zirvələrdə metrik və versiyaların loqotipi, audit hesabatları.

Başlanğıc çek siyahısı

  • SLO/SLI və «qırmızı xətlər» (səhv/gecikmə/saturasiya) qeydə alınmışdır.
  • Yükləmə ssenariləri və profilləri təsdiq edilmişdir (open/closed, spike/soak/stress).
  • Data real, PII maskalı, inteqrasiya - sandbox/mock.
  • Müşahidə hazır: metriklər/treys/log, reliz tags.
  • Config sistemləri (ulimit/sysctl/pools) sənədləşdirilmişdir.
  • Cache və rollback kriteriyaları avtomatik Skale/qızdırma planı.
  • Komandaların əlaqə planı (on-call).
  • Hesabat şablonu (qrafiklər, nəticələr, hərəkətlər) hazırlanmışdır.

Tipik səhvlər

Test closed-model «yaşıl» nəticə verir və məhsul düşür (open-model nəzərə alınmamalıdır).
Qeyri-nümayəndəlik məlumatları (bir valyuta/bir provayder) → yanlış nəticələr.
Sıfır hazırlıq: soyuq caches/TLS/konnektlər → başlanğıcda həddindən artıq gecikmə.
Limitsiz retrajlar → fırtına və kaskad düşmə.
Bütün xidmətlər üçün eyni profillər → real «qaynar nöqtələri» qaçırmaq.
Soak qaçışlarının olmaması → yaddaş sızması və sürüşmə görünmür.
Qeyri-şəffaf nəticələr: heç bir yol/fleymqraf → dar yeri lokallaşdırmaq mümkün deyil.

Mini playbuklar

Limit bant genişliyi (breakpoint)

1. Hər 5-10 dəqiqədə 10-20% yük mərhələləri. 2) P95-in kəskin böyüdüyü anı və səhvləri düzəldir> SLO. 3) CPU/DB/cache profillərini çıxarın. 4) Optimallaşdırma planı və təkrar.

Retraj fırtınaları

1. retry-budget məhdudlaşdırmaq və backoff + jitter aktiv. 2) request-collapsing/SWR daxil edin. 3) «deqrad rejimi» icazə (məhdud funksionallıq). 4) İdempotentliyi yenidən yoxlayın.

Pik-event (turnir) - ön plan

1. CDN/DNS/TLS/hovuzları qızdırın. 2) HPA hədəf artırmaq, ehtiyat hazırlamaq. 3) Botlar üçün ayrı-ayrı rate-limitlər. 4) Dashbord «pik rejimi», on-call rabitə körpüsü.

Soak gecəsi

1. 8-12 saat sabit yük. 2) heap/FD/conn/GC-pauses monitorinq. 3) Delta p95 və hit-ratio müqayisə. 4) Sızma və sürüklənməni düzəldir.

Yekun

Yük testi «RPS yarışı» deyil, mühəndislik qərarlarının qəbul edilməsi prosesidir. Real profilləri (xüsusilə açıq model) modelləşdirin, SLO-ları düzəldin, metrik və izləri çəkin, performans diz axtarın və performans xərclərini hesablayın. Uçları avtomatlaşdırın, anti-fırtına retraylarını saxlayın və pik hadisələri planlaşdırın - belə ki, platforma ən gərgin anlarda proqnozlaşdırıla bilən və davamlı olacaq.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.