GH GambleHub

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

1) Истилоҳот ва вазифаҳо

Санҷиши сарборӣ - санҷиш дар доираи корӣ (ҳадафи RPS/рақобат) бар зидди SLO (масалан, p95 <200 ms, сатҳи хатогӣ <0). 5%).
Санҷиши стресс - берун аз (пеш аз/аз ҳад зиёд пур кардани CPU/DB/шабака), мушоҳида кардани механикаи таназзул ва барқароршавӣ.
Санҷиши хӯша - якбора якбора сарборӣ (× N барои дақиқаҳо).
Soak/Истодагарӣ - муддати тӯлонӣ (соат/рӯз) барои ёфтани ихроҷ, кашиши GC, тақсимшавӣ, афзоиши навбат.
Санҷиши иқтидор - ҳисоб кардани платои гузариш (нуқтаи пуррагӣ) ва захираҳо.

Ҳадафҳо: SLO-ро тасдиқ кунед, платоро ислоҳ кунед, мушкилотро дарк кунед, миқёси худкор ва маҳдудиятҳоро санҷед.

2) Модели ҳаракат: кушода ва пӯшида

Модели пӯшида (ҳамоҳангсозӣ): шумораи муайяни корбарони виртуалӣ (VU), ҳар яке пас аз ҷавоб вақти фикррониро фароҳам меорад.
Модели кушода (суръати воридшавӣ): суръати муқарраршудаи дархостҳо (RPS), новобаста аз посухҳо.

💡 Ҳангоми фурӯш, аксар вақт ҷаҳони "кушода" (корбарон меоянд), аз ин рӯ, афзалият ба моделсозии суръати омадани API/web пушт дода мешавад.

Қонуни Литл: 'L = λ W'

'L' is шумораи миёнаи дархостҳои ҳамзамон хидматшаванда,

'λ' - шиддат (RPS),

'W' is вақти миёнаи посух.
Аз ин рӯ баҳодиҳии рақобатпазирии зарурии генератор: 'мувофиқати ≈ target_RPS p95_latency'.

3) Нишондиҳандаҳо: он чизе ки мо чен мекунем

Таъхир SLI: p50/p90/p95/p99 ва думи p99. 9; алоҳида барои роҳҳои "гарм" ва "хунук".
Хатогиҳо: '5xx', '4xx' (дуруст/беэътибор), вақтхушӣ, бекор карда шуд.
Гузариш: RPS-и устувор, ҷараёнҳои интиқол/байтҳо.
Захираҳо: CPU, RAM/heap, таваққуфи GC, диски IOPS/lat, фарохмаҷрои шабака, шумораи пайвастҳо/FD.
Навбатҳо ва Backprescher: амиқ, вақти интизорӣ, шумораи дархостҳои сарой/маҳдуд.
Самаранокии кэш: хит/пазмон шудан, тӯфонҳои гарм.
DB/caches/навбатҳо: дархостҳои p95, қуфлҳо, муноқишаҳо, истифодаи ҳавз.

4) Стендҳо ва додаҳо

Эквиваленти конфигуратсия: версияҳои нармафзор, маҳдудиятҳо (ULimit, contrack), конфигуратсияи JVM/GC, ҳавзҳо.
Топология: ЛБ, CDN, WAF, TLS, ҳамон шабака "hops".
Маълумот: тақсимоти воқеӣ (андозаи объектҳо, калидҳои "гарм "/" хунук ", минтақавӣ).
Оғози хунук/гарм/гарм: давишҳои инфиродӣ; Боварӣ ҳосил кунед, ки кэшҳои "хунук" -ро санҷед.
Ҷудокунии пасзамина: Хомӯш кардани ҷойҳои корӣ/крономҳо ё ҳисоби онҳо.

5) Сенарияҳо (профилҳои сарборӣ)

1. Асоси: суръатбахшии қадам ба ҳадафи RPS, 10-30 дақиқа нигоҳ доред.
2. Ramp & Hold: афзоиши ҳамвор то X% аз ҳадаф, нигоҳдорӣ → таҳлили дум.
3. Хӯша: фавран × 2- × 5 лаппиши 1-5 дақиқа, баъд баргардед.
4. Стресс ба нокомӣ: қадамҳо ба нокомӣ; нуқтаи аввалини нокомии SLO ва нуқтаи "танаффус" -ро ислоҳ кунед.
5. Об кунед: 6-24 соат бо тағирёбии трафик (рӯз/шаб), чеҳраҳо/дрифтро тамошо кунед.
6. Омехта: омехтаи нуқтаҳои ниҳоӣ бо тақсимоти воқеӣ (Zipf/pareto), вазнҳои гуногун.

6) Раванди зина ба зина

SLO ва профилҳои мақсадноки трафикро муайян кунед.
Модели боркуниро интихоб кунед (кушода/пӯшида), меъёри воридшавӣ ё VU-ҳоро таъин кунед.
Тартиб додани маълумот ва шеваҳои "гарм "/" хунук ".
Танзими телеметрия (роҳҳо/ченакҳо/гузоришҳо), таносуб бо давиши санҷиш.
Гарм кардан ва кор кардан, ҷамъоварии артефактҳо (профилҳои CPU/тӯдаҳо, графикаи аланга, шарҳ додан/суст кардани гузоришҳо DB).
Таҳлили Bottleneck, ташаккули ҷузъҳои амал.
Репогон пас аз ислоҳ, навсозии ибтидоӣ ва дафтарчаи қобилият.

7) Зарфҳо ва ислоҳи маъмулӣ

Хидмати марбут ба CPU: профилактика → бартараф кардани функсияҳои гарм, тақсимот, филиалҳо; векторизатсия, сохтори ба кэш дӯстдошта.
Шабака/TLS: зинда мондан, HTTP/2/3, муттаҳидсозии пайвастшавӣ, танаффуси дуруст, сӯҳбати коҳишёфта.
DB: индексатсияҳо, бастабандӣ, дархостҳои омодашуда, ҳавзи пайвастшавӣ, ҷудокунии R/W, кэшкунии натиҷа, тақсимоти дархостҳо.
Кэшҳо: андоза, TTL, дархости муттаҳидшавӣ, муҳофизати тӯфон, гармшавӣ, тӯбҳои минтақавӣ.
Навбатҳо/брокерҳо: маҳдудиятҳои қабул/параллелизм, андозаи партияҳо, истеъмолкунандагони номатлуб, шифтҳои DLQ.
Партовҳо/таваққуфҳо: танзими GC, иҷораи буферӣ, ҷамъоварии ашё дар ҳудуди оқилона.
I/O/диск: асинхронии I/O, фишурдасозӣ, фишурдани ҷавобҳо бо сатҳи оқилона.

8) Маҳдудиятҳо ва муҳофизат

Мӯҳлатҳои буҷет: аз боло то поён барои пешгирӣ кардани каскадҳо.
Сатилҳои лимит/нишонаҳо: таназзули пешгӯишаванда ба ҷои "марги дароз".
Қатъи гардиш ва сояи камвазнии афзалиятнок.
Backpressure: сигналҳо ва маҳдудияти ҳамоҳангии амиқ ба занҷир.
Bulkheads: ҳавзҳои ҷудошаванда барои нуқтаҳои ниҳоӣ.
Idempotency: калидҳо барои такрори бехатар дар зери кашишҳо.

9) Воситаҳо ва кай интихоб кардани онҳо

k6 - laconic JS, дастгирии аъло барои сатҳи воридшавӣ, ҳамгироӣ ва графикӣ.
Gatling - Scala DSL, генератори баландсифат.
JM ‌ eter - экосистемаи фасеҳ, бой; барои протоколҳо/плагинҳо қулай аст.
Малах - Скриптҳои Python, ки барои мантиқи мураккаби ҷараёни корбар мувофиқанд.
Vegeta/ey/wrk - микробенчӣ ва нуқта дар HTTP кор мекунад.
tc/netem, toxiproxy - тазриқи деградатсияи шабака.
Фламеграф/профилер - ҷустуҷӯи нуқтаҳои доғи CPU/тӯда.

10) Намунаҳо (эскизҳо)

k6 (модели кушода, нуқтаҳои ниҳоӣ)

javascript import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
scenarios: {
open_model: {
executor: 'constant-arrival-rate',
rate: 800, timeUnit: '1s', duration: '20m',
preAllocatedVUs: 500, maxVUs: 2000
}
},
thresholds: {
'http_req_duration{kind:hot}': ['p(95)<200'],
'http_req_failed': ['rate<0. 005']
}
};

export default function () {
const r = Math. random();
let res;
if (r < 0. 6) {
res = http. get('https://svc/api/hot', { tags: { kind: 'hot' }});
} else if (r < 0. 9) {
res = http. get('https://svc/api/warm', { tags: { kind: 'warm' }});
} else {
res = http. post('https://svc/api/heavy', JSON. stringify({ n: 1000 }), { headers: { 'Content-Type': 'application/json' }});
}
check(res, { 'status is 2xx': (r) => r. status >= 200 && r. status < 300 });
sleep(0. 2);
}

Гатлинг (қадамҳо ва хӯша)

scala setUp(
scn. inject(
rampUsersPerSec(50) to 500 during (10 minutes),
constantUsersPerSec(500) during (20 minutes),
spikeUsers(2000). during(30. seconds)
)
). protocols(http. baseUrl("https://svc"))

Нақшаи сарборӣ (скелети YAML)

yaml profile: "mix-traffic"
targets:
- endpoint: GET /api/hot weight: 0. 6
- endpoint: GET /api/warm weight: 0. 3
- endpoint: POST /api/heavy weight: 0. 1 schedule:
- step: { rps: 300, hold: 10m }
- step: { rps: 600, hold: 10m }
- step: { rps: 900, hold: 10m }
guardrails:
slo:
p95_ms: 200 error_rate: 0. 5%
abort_if:
- metric: error_rate op: ">"
value: 2%
window: 2m

11) Автоматика ва давраи зиндагӣ

Дуди перф дар ҳар як PR (кӯтоҳ нуқтаҳои ниҳоӣ).
"Иқтидори шабона" дар саҳна бо гузоришҳо ва артефактҳои профилӣ кор мекунад.
Дарвозаҳо дар CI/CD: сохтани файл ҳангоми регрессияи p95/p99> X% афзоиши ибтидоӣ ё суръати хатогӣ.
Версияи пойгоҳҳо ва нигоҳдории профилҳо/фламеграфҳо ҳамчун артефактҳо.
Барчаспҳои мувофиқ: кадом хидмат/нуқтаи ниҳоӣ фаро гирифта шудааст, ки профили трафик истифода мешавад.

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

Генератор ва хадамоти санҷишӣ дар ҳамон як мошин → натиҷаҳои таҳрифшуда.
Танҳо модели пӯшида (VU-ҳо) барои API backs → undershooting ва тасаввуроти нодуруст.
Дар пойгоҳи додаҳои холӣ/кэш бе оғози хунук кор мекунад.
Тақсимоти воқеӣ вуҷуд надорад (ҳама дархостҳо якхелаанд).
Телеметрия нест (RPS/ниҳонӣ танҳо дар тарафи генератор).
Муқоиса бидуни пойгоҳҳои устувор ва назорати муҳити зист.
"Оптимизатсия" тавассути таъхири зиёд ба ҷои ислоҳи сабаб.

13) Рӯйхати назорати меъморон

1. SLO ва сарбории маъмулӣ/қуллаи муайяншуда?
2. Оё модели дуруст (кушода/пӯшида) интихоб шудааст ва профили трафик тавсиф карда шудааст?
3. Стенд дар конфигуратсия ва топология баробар аст, оё ҳолати хунук/гарм вуҷуд дорад?
4. Телеметрия ва профилҳо фаъол мебошанд, захми санҷишӣ қайд карда шудааст?
5. Давидан: пойгоҳ/пандус/хӯша/стресс/шустан - пӯшида?
6. Оё нуқтаҳои сердаромад ва маржаи бехатарӣ ба нақша гирифта шудаанд?
7. Маҳдудиятҳои танзимшуда, вайронкунандагон, backprescher, idempotency, сиёсати сояафкан?
8. Оё дарвозаҳои CI барои регрессияи p95/p99 ва сатҳи хатогӣ мавҷуданд, оё пойгоҳҳо санҷида шудаанд?
9. Пас аз ислоҳ - репрогон ва навсозии қудрати дафтар?
10. Андозаи худкор ва нақшаи ҳолати фавқулодда ҳуҷҷатгузорӣ шудааст?

Хулоса

Озмоиши сарборӣ ва стресс на як маротиба "нажодҳо", балки таҷрибаи муттасили муҳандисӣ мебошанд. Модели воқеии трафик, стендҳои дуруст, телеметрия ва автоматизатсия дар CI/CD иҷроишро аз "сеҳри махфӣ" ба қобилияти метрикӣ табдил медиҳанд: шумо медонед, ки шифти шумо дар куҷост, захира то чӣ андоза бехатар аст ва кадом тағирот воқеан таҷрибаи корбарро беҳтар мекунад.

Contact

Тамос гиред

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

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

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

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

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