GH GambleHub

Санҷиши сарборӣ ва стресс

Санҷиши сарборӣ ва стресс

1) Чаро ба шумо лозим аст

Вазифаҳо:
  • Тасдиқи қобилият (чӣ қадар ҷаласаҳои RPS/рақобат система бо назардошти SLO тобовар хоҳад буд).
  • Пайдо кардани монеаҳо (CPU/IO/DB/шабакаҳо/қуфлҳо/ҳавзҳо).
  • Дар CI/CD буҷа ва дарвозаҳои иҷроишро насб кунед.
  • Хатари релизҳоро коҳиш диҳед (регрессияи p95/p99, афзоиши хатогиҳои баландтарин).
  • Нақшаи иқтидор/арзиш (миқёс ва захираҳо).

2) Намудҳои санҷишҳои perf

Сарборӣ: ҳаракати воқеӣ ба қуллаҳо; Тасдиқи SLO.
Стресс: афзоиш аз/болотар аз рафтори деградатсия дар ҷое, ки он вайрон мешавад.
Хӯша: ҷаҳиши сарбории зуд → чандирӣ/автоскале.
Soak/Истодагарӣ: соатҳо/рӯз → ихроҷ, фрагментатсия, кашиши дермонӣ.
Қобилият/миқёс: чӣ гуна гузариш/ниҳонӣ бо миқёс тағйир меёбад; Қонуни Амдал/Густафсон.
Perf дуд: як "дуди" кӯтоҳ дар ҳар як озодкунӣ (шаъну шараф).


3) Моделҳои тавлиди трафик

VU/мувофиқати собит: 'N' корбарон, ки ҳар яки онҳо дархост мекунанд, ки ба муштарӣ дар навбат истанд. Хатари пинҳон кардани изофабор.
Сатҳи расидан: ҷараёни барномаҳо бо шиддатнокии (req/s) λ, мисли ҳаёти воқеӣ. Барои API-ҳои оммавӣ дурусттар аст.

Қонуни Литл: 'L = λ × W'.
Барои пул/хидмат, ҳадди аққали параллелизм ≈ 'λ × W' (илова 20-50% инвентаризатсия).
Дар куҷо 'λ' интиқол дода мешавад, 'W' вақти миёнаи хидмат аст.


4) Профилҳо ва сенарияҳои боркунӣ

Омехтаи саёҳати корбар: саҳмияҳои скриптҳо (воридшавӣ, дидан, амонат, кассир...).
Вақти фикрӣ: таваққуфи корбар (тақсимот: экспоненсиалӣ/ғайримуқаррарӣ).
Профили маълумот: андозаи ҷавобҳо, сарборӣ, тағйирпазирии параметрҳо.
Таносуб: қадамҳои пайванд (кукиҳо/токенҳо/ID) ҳамчун ҷараёни воқеӣ.
Кэши хунук/гарм/гарм: давиши инфиродӣ.
Хонда шуд vs Навиштан: тавозуни хондан/сабтҳо, номутобиқатӣ барои бознигарӣ.
Бисёр минтақа: RTT, тақсимот аз ҷониби POP/ASN.


5) Муҳити санҷишӣ

Ҷудокунӣ: стенд ба маҳсулот дар топология/танзимот наздик аст (аммо маҳсулотро "латукӯб накунед").
Маълумот: ниқобҳои PII, ҳаҷмҳо, нишондиҳандаҳо дар фурӯш.
Генераторҳои боркунӣ: бар зидди CPU/шабака истироҳат накунед; давандагони тақсимшуда, ҳамоҳангсозии вақт.
Мушоҳида: ченакҳо/роҳҳо/гузоришҳо, синтетика дар периметр, содироти профилҳои CPU/теппа.


6) Метрҳо ва SLI

Интиқол: RPS/Амалиётҳо/sec

Таъхир: p50/p95/p99, TTFB, вақти сервер ва шабака.
Хатогиҳо: ҳиссаи хатоҳои 5xx/4xx/domain.
Қаноатмандӣ: CPU, боркунии avg, GC, диски IO/ниҳонӣ, шабака, интизории ҳавз.
Бизнес SLI: ≤ 5s муваффақияти пасандоз, ≤ 2s тасдиқи фармоиш.

Ҳадди ниҳоиро аз SLO гиред (масалан, "99. 95% ≤ 300 мс"), суръати сӯхтанро дар давоми давидан назорат кунед.


7) Дарёфти мушкилот (техника)

1. Системаро пайваста 60-80% сарбории мақсаднокро гарм кунед.
2. Афзоиши қадамҳо (пандус) → ислоҳ, ки дар он p95/p99 ва суръати хатогӣ меафзояд.

3. Match p99 хӯшаҳо ба:
  • навбатҳо дар ҳавзҳо (DB/HTTP),
  • афзоиши WAIT/қуфлҳо (DB),
  • GC-таваққуф/теппа,
  • retransmitts/талафоти пакет,
  • таъхири диск/пазмонҳои кэш.
  • 4. Локализатсия: ҷустуҷӯи бинарӣ бо роҳи дархост, профилҳо (CPU/alloc/lock-profile).
  • 5. Ислоҳ кардани "шиша" → танзими → такрори давидан.

8) Рафтор дар зери стресс

Деградатсияи зебо: маҳдудиятҳо, схемаҳо, навбати бозгашт, барои коркард қабул карда мешаванд.
Бозсозӣ: ҳадди аксар 1, танҳо idempotent; jitter; буҷети бозпас ≤ 10% RPS.
Fail-open/Fail-пӯшида: барои вобастагии ғайримуқаррарӣ, имкон диҳед, ки кушода нашавед (кэш/стуб).
Нокомии тасодуфӣ: ҷудокунии ҳавзҳо/квотаҳо (болопӯш), танаффуси зуд, хомӯш кардани функсияҳо (парчамҳои хусусӣ).


9) Воситаҳо (интихоб барои вазифа)

k6 (Java-Script, кушода/кушода-модел, зуд, қулай дар CI).
JM eter (бойи экосистема, GUI/CLI, плагинҳо, вале вазнинтар).
Гатлинг (Scala DSL, иҷрои баланд).
Малах (Python, чандирии скрипт).
Vegeta/hey/wrk (микроавтобусҳо ва санҷиши зуд).

Қоида: як асбоби "асосӣ" + CLI сабук барои қалам дар дуд дар PR.


10) Намунаҳо (порчаҳо)

10. 1 к6 (модели кушода бо суръати расидан)

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 JM eter (идеяи профил)

Гурӯҳи ришта + Риштаи қадам ба риштаи мувофиқат (ба мисли кушода).
HTTP Дархости пешфарз, Менеҷери кукиҳо, CSV Data Set.
Шунавандаи Backend → Influx-DB/Grafana; Тасдиқҳо аз рӯи вақт/рамз.

10. 3 малах (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) Маълумот, таносуб, тайёрӣ

Маълумотҳои тухмӣ: феҳристҳо, корбарон, тавозунҳо, нишонаҳо - ба монанди фурӯш.
PII ниқоб/беном; тавлиди синтетика дар болои тақсимоти воқеӣ.

Коррелятсия: Гирифтани ID/нишонаҳо аз посухҳо (Reg


12) Мушоҳидакорӣ дар давидан

Панелҳои RED (меъёр, хатогиҳо, давомнокӣ) дар тӯли масирҳо.
Намунаҳо - гузариш аз нишондиҳандаҳо ба пайҳо (trace_id).
Гузоришҳои хатогӣ: интихоб + ҷамъбаст, нусхабардорӣ/idempotence.
Система: CPU/GC/тӯда, дискҳо/шабака, интизории ҳавз.
DB: дархостҳои боло, қуфлҳо, сканҳои индексатсия, варам.


13) Дарвозаҳои автоматизатсия ва иҷроиш

CI: давишҳои кӯтоҳ дар якҷоягӣ (масалан, к6 2-3 дақиқа) бо остона.
Шабона/Ҳафта: ғуссаи дароз/стресс дар муҳити алоҳида; гузоришҳо ва тамоюлҳо.
Варақаҳои канарӣ: таҳлили SLO (хатогӣ, p95) ҳамчун "дарвоза" -и таблиғот.
Регрессия: базавӣ ва сохтори ҷорӣ; ҳушдор ҳангоми бадшавӣ> X%.


14) Банақшагирии қобилият ва арзиши

Қубурҳо ба ақибмонӣ ва таъхир: нуқтаи зонуро муайян кунед - пас аз он ки p99 якбора калон мешавад.
Миқёс: Самаранокии миқёсро чен кунед (delta RPS/delta гиреҳ).
Арзиш: "RPS барои як доллар/соат", захира барои рӯйдодҳои баландтарин + DR-захира.


15) Анти-намунаҳо

Бе назорат ё озмоиш ба prod дар муҳити "холӣ" латукӯб кунед, на ба мисли prod.
Модели пӯшида бо VU-ҳои собит, ки изофаборро пинҳон мекунанд.
Набудани вақти фикрӣ/додаҳо → хитҳои ғайривоқеии кэш ё баръакс - тӯфон ба манбаъ.
Як скрипти "/ping "ба ҷои ҷараёни фармоишӣ.
Набудани мушоҳида: "мо танҳо RPS ва таъхири миёнаро мебинем".
Рисолаҳои идоранашаванда → худидоракунии DD JO.
Омезиши санҷиш ва оптимизатсия бидуни ислоҳи гипотезаҳо/тағирот.


16) Рӯйхати назоратӣ (0-30 рӯз)

0-7 рӯз

SLI/SLO ва профилҳои мақсадноки трафикро муайян кунед (омехта, вақти фикр, маълумот).
Асбобро интихоб кунед (k6/JM beter/малах), панели RED-ро баланд кунед.
Маълумот дар бораи мавқеъ ва тухмиҳоро омода кунед, маҳдудиятҳои/captchasҳои тарафи сеюмро хомӯш кунед.

8-20 рӯз

Сенарияҳои сохтан: модели кушода (суръати расидан), кэши хунук/гарм/гарм.
Иҷро кардани сарборӣ → стресс → хӯша; нуқтаи зону ва мушкилотро ислоҳ кунед.
Татбиқи дарвозаҳои иҷро дар CI (micro-run).

21-30 рӯз

Озмоиши ғарқшуда 4-24 соат: ихроҷи GC/дрифт, мӯътадилӣ.
Маҳдудиятҳои ҳуҷҷат, нақшаи тавонмандӣ, тасвирҳои "RPS → p95/oshibki".
Китоби китобро "чӣ гуна зиёд кардани маҳдудият/миқёс" ва "чӣ гуна таназзул кардан" омода кунед.


17) Нишондиҳандаҳои камолот

Профилҳои воқеӣ мавҷуданд (омехта, вақти фикрӣ, маълумот), ки ≥ 80% трафикро фаро мегиранд.
Панелҳои RED + пайгирӣ барои ҳама санҷишҳо пайваст карда шудаанд.
Дарвозаҳои иҷроиш ҳангоми пушаймон кардани p95/хатогиҳо релизҳоро бозмедоранд.
Иқтидор ва нуқтаи зону аз ҷониби хадамоти асосӣ ҳуҷҷатгузорӣ карда мешаванд.
Моҳонаи шустан/стресс ва гузоришҳо дар бораи пешрафт.
Муқовимат ба "хӯша" бо роҳи худкор ва набудани каскад тасдиқ карда мешавад.


18) Хулоса

Озмоиши сарборӣ як таҷрибаи муқаррарии муҳандисӣ аст, на як маротиба "андозагирӣ". "Истифодабарандагони воқеии моделӣ (модели кушода), чен кунед, ки таҷрибаи муштариро чӣ гуна инъикос мекунад (SLI/SLO), мушоҳида ва дарвозаҳоро дар CI/CD нигоҳ доред, стресс/хӯша/тар кунед ва нуқтаи зонуро ислоҳ кунед. Он гоҳ рӯйдодҳои баландтарин ва аққалҳои сиёҳ ба сенарияҳои идорашаванда табдил меёбанд ва иҷрои онҳо ба параметрҳои пешгӯишаванда ва ченшавандаи платформаи шумо табдил меёбад.

Contact

Тамос гиред

Барои саволҳо ё дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Оғози интегратсия

Email — муҳим аст. Telegram ё WhatsApp — ихтиёрӣ.

Номи шумо ихтиёрӣ
Email ихтиёрӣ
Мавзӯъ ихтиёрӣ
Паём ихтиёрӣ
Telegram ихтиёрӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиёрӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.