GH GambleHub

Ýük synagy we stres

Ýük synagy we stres

1) Bu näme üçin zerur?

Maksatlar:
  • Kuwwaty tassyklaň (ulgam berlen SLO-da näçe RPS/bäsdeşlik sessiýasyna çydap biler).
  • Çüýşe bokurdagyny tapyň (CPU/IO/DB/tor/blokirleme/howuz).
  • CI/CD-de çykyş-býudjetleri we "geýtleri" sazla.
  • Relizleriň töwekgelçiligini azaltmak (regressiýa p95/p99, iň ýokary derejedäki ýalňyşlyklaryň köpelmegi).
  • Kuwwaty/gymmaty meýilleşdirmek (skeýl-aut we ätiýaçlyklar).

2) Perf synaglarynyň görnüşleri

Ýüklemek (iş ýüki): iň ýokary derejä ýakyn hakyky traffik; SLO tassyklamasy.
Stress (stress): iň ýokary/iň ýokary ösüş → bozulan ýerdäki özüni alyp baryş.
Spike (impuls): ýüküň çalt bökmegi → elastiklik/awtoskeýl.
Soak/Endurance (dowamly): sagat/gün → syzmak, bölmek, latency süýşmesi.
Capacity/Scalability: scale-out-da throughput/latency nähili üýtgeýär; Amdal/Gustafson kanuny.
Smoke perf: Her çykyşda gysga "tüsse" geçişi (çykyş-sanitary).


3) Traffigi döretmegiň modelleri

Ýapyk model (fixed VUs/concurrency): 'N' ulanyjy, her kim haýyş edýär → müşderide nobat. Artykmaç ýüküň gizlenmek töwekgelçiligi.
Açyk model (arrival rate): hakyky durmuşdaky ýaly λ intensiwligi (req/s) bolan arzalaryň akymy. Köpçülige açyk API üçin has dogry.

Little kanuny: 'L = λ × W'.
Howuz/hyzmat üçin: iň az parallellik ≈ 'λ × W' (ätiýaçlygyň 20-50% -ini goşuň).
Nirede 'λ' - throughput, 'W' - ortaça hyzmat wagty.


4) Ýüküň profilleri we ssenariýalary

User journey mix: ssenariýalaryň paýlary (login, browse, deposit, checkout...).
Think-time: Ulanyjynyň arakesmeleri (paýlanyş: eksponensial/lognormal).
Data profile: jogaplaryň ululygy, payload, parametrleriň üýtgemegi.
Baglanyşyk: ädimleri (cookie/token/ID) hakyky ýaýlymdaky ýaly baglanyşdyryň.
Sowuk/ýyly/gyzgyn kesh: aýry-aýry geçişler.
Okamak vs Write: okalyşlaryň/ýazgylaryň deňagramlylygy, retraýalar üçin deňagramlylyk.
Köp sebit: RTT, POP/ASN boýunça paýlanyş.


5) Synag gurşawy

Izolýasiýa: stend topologiýa/sazlamalar boýunça önüme ýakyn (ýöne önümi "urmaýarys").
Maglumatlar: PII maskalanmak, göwrümler, indeksler önümdäki ýaly.
Ýük generatorlary: CPU/tora daýanmaýar; paýlanan rannerler, wagt sinhronizasiýasy.
Syn edilişi: metrikler/söwdalar/loglar, perimetri sintetika, CPU/heap profilleriniň eksporty.


6) Metrikler we SLI

Throughput: sekuntda RPS/amallar.
Latency: p50/p95/p99, TTFB, server time vs network.
Errors: 5xx/4xx/domen ýalňyşlyklarynyň paýy.
Saturation: CPU, load avg, GC, disk IOps/latentlik, network, pool wait.
Business-SLI: 5s ≤ goýumyň üstünligi, sargytyň tassyklanmagy ≤ 2s.

Bosagaly bahalary SLO-dan alyň (mysal üçin "99. 95% ≤ 300 ms"), geçiş wagtynda burn-rate gözegçilik ediň.


7) Dar ýerleri gözlemek (usulyýet)

1. Ulgamy maksatly ýüküň 60-80% -ine yzygiderli gyzdyryň.
2. Ädimler bilen ulalyň (ramp) → p95/p99 we error-rate ösýän ýerinde ýazyň.

3. p99 partlamalaryny deňeşdiriň:
  • howuzlarda nobatlar (DB/HTTP),
  • WAIT/lokow (DB) beýikligi,
  • GC arakesmeleri/heap,
  • tor retransmits/packet loss,
  • disk gizlinligi/keş ýalňyşlyklary.
  • 4. Lokallaşdyryň: gözleg ýoly boýunça ikilik gözleg, profil düzüjiler (CPU/alloc/lock-profile).
  • 5. "Çüýşäni" düzüň → sazlamak → gaýtalamak.

8) Stres astynda özüni alyp barmak

Graceful degradation: limitler, circuit-breakers, backpressure bilen nobatlar, "gaýtadan işlemek üçin kabul edildi" re modeimi.
Retraýlar: iň köp 1, diňe dempotent; jitler; retraýlaryň býudjeti ≤ RPS-den 10%.
"Fail-open/Fail-closed": kritiki däl endikler üçin "fail-open" -a ýol beriň.
Cascading failure: howuzlaryň/kwotalaryň izolýasiýasy (bulkhead), çalt wagtlar, funksiýalaryň "ýumşak" öçürilmegi (feature flags).


9) Gurallar (wezipe üçin saýlamak)

k6 (JavaScript, açyk/açyk-model, çalt, CI-de amatly).
JMeter (ekosistemalara baý, GUI/CLI, pluginler, ýöne has agyr).
Gatling (Scala DSL, ýokary öndürijilik).
Locust (Python, ssenariýalaryň çeýeligi).
Vegeta/hey/wrk (mikro-bençi we çalt barlamak).

Düzgün: Bir "esasy" gural + PR-da smoke-perf üçin ýeňil CLI.


10) Mysallar (snippetler)

10. 1 k6 (arrival rate bilen açyk 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 pikiri)

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

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) Maglumatlar, korrelýasiýa, taýýarlyk

Seed-data: kataloglar, ulanyjylar, balanslar, tokenler - önümdäki ýaly.
PII-ni gizlemek/anonimleşdirmek; hakyky paýlanyşyň üstünden sintetikanyň öndürilmegi.
Baglanyşyk: Jogaplardan ID/bellikleri alyň (RegExp/JSONPath) we indiki ädimlerde ulanyň.


12) Arakesmelerde syn edilişi

Marşrutlar boýunça RED-daşbordlar (Rate, Errors, Duration).
Exemplars: Metriklerden ýollara geçmek (trace_id).
Ýalňyşlyk ýazgylary: sampling + agregasiýa, dublikatlar/idempotentlik.
Ulgam: CPU/GC/heap, diskler/tor, pool wait.
BD: top-soraglar, blokirlemeler, indeks-skanlar, bloat.


13) Awtomatlaşdyryş we çykyş-geýtleri

CI: merge-de gysga aralyklar (mysal üçin k6 2-3 minut).
Nightly/Weekly: aýratyn gurşawda uzyn soak/stress; hasabatlar we tendensiýalar.
Kanar relizleri: SLO (error-rate, p95) mahabatyň "derwezesi" hökmünde seljermesi.
Regressiýalar: baseline vs häzirki bild; erbetleşende alertler> X%.


14) Kuwwatyň meýilleşdirilmegi we bahasy

throughput → latency: knee point (dyzyňyzy) kesgitläň - ondan soň p99 birden ýokarlanýar.
Skale aut: masştabyň netijeliligini ölçäň (delta RPS/delta düwünleri).
Bahasy: "$/sagat üçin RPS", iň ýokary wakalar üçin ätiýaçlyk + DR-ätiýaçlyk.


15) Anti-patternler

Önümi gözegçiliksiz uruň ýa-da önüme meňzeş bolmadyk "boş" gurşawda synagdan geçiriň.
Artykmaç ýükleri gizleýän, kesgitlenen VU bilen ýapyk model.
Think-time/maglumatlaryň ýoklugy → hakyky däl keş hitleri ýa-da tersine - çeşmelere tupan.
Ulanyjy şöhleleriniň ýerine bir "/ping "ssenarisi.
Syn edilmezlik: "diňe RPS we ortaça gijä galmagy görýäris".
Gözegçiliksiz retralar → öz-DDoS.
Gipotezalary/üýtgeşmeleri düzetmezden synag we optimizasiýalary garyşdyrmak.


16) Çek-sanawy (0-30 gün)

0-7 gün

SLI/SLO we maksatly trafik profillerini (mix, think-time, maglumatlar) kesgitläň.
(k6/JMeter/Locust) guraly saýlaň, RED dashbordlaryny galdyryň.
Stendi we tohum maglumatlary taýýarlaň, üçünji tarap çäklerini/kaptçlaryny öçüriň.

8-20 gün

Ssenarileri guruň: açyk model (arrival rate), sowuk/ýyly/gyzgyn kesh.
Ýükläň → stress → spike; knee point we dar ýerleri düzüň.
CI (mikro-geçiş) ýerine ýetiriş oýunlaryny giriziň.

21-30 gün

Soak-synag 4-24 sagat: syzmak/süýşmek GC, durnuklaşma.
Çäkleri, kuwwat meýilnamasyny, "RPS → p95/ýalňyşlyklar" suratyny resminamalaşdyryň.
Runbook "çäklendirmeleri/skaýllary nädip köpeltmeli" we "nädip peseltmeli".


17) Kämillik ölçegleri

Traffigiň 80% -ine ≥ hakyky profiller (mix, think-time, maglumatlar) bar.
RED-dashboard + tracking ähli synaglar üçin birikdirildi.
Çykyş-geýtleri p95/ýalňyşlyklar regressiýa edilende relizleri petikleýär.
Kuwwat we knee point esasy hyzmatlar boýunça resminamalaşdyryldy.
Aýlyk soak/stress-geçişler we dinamika boýunça hasabatlar.
"Spike" -e garşylygy awtoskeil we cascade-fail ýoklugy bilen tassyklanýar.


18) Netijenama

Ýük synagy bir gezeklik "ölçeg" däl-de, yzygiderli in engineeringenerçilik tejribesidir. Hakyky ulanyjylary simulýasiýa ediň (open-model), müşderiniň tejribesini görkezýän zady ölçäň (SLI/SLO), CI/CD-de gözegçilik we "geýtleri" saklaň, stres/spike/soak-pogonlary geçiriň we knee point belläň. Şonda iň ýokary wakalar we "gara guşlar" dolandyrylýan ssenariýalara, öndürijilik bolsa platformanyzyň öňünden aýdyp boljak we ölçäp boljak parametrine öwrülýär.

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.

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.