GH GambleHub

Ҳавзҳои пайвастшавӣ ва ниҳонӣ

Ҳавзҳои пайвастшавӣ ва ниҳонӣ

1) Чаро ҳавзҳо лозиманд

Пайвастшавӣ гарон аст (дастони TCP/TLS, аутентификатсия, гармӣ). Ҳавз имкон медиҳад:
  • Пайвастҳои тайёрро аз нав истифода баред (зинда монед) → дар зери TTFB.
  • Ҳамоҳангии назоратро назорат кунед ва ба ҷои тарма аз ақибмонӣ фишор диҳед.
  • Аз сабаби андозаи дуруст ва танаффус думҳои p95/p99-ро кам кунед.

Хатарҳои асосӣ: навбатҳои интизорӣ дар ҳавз, басташавии сатр, мундариҷа барои пайвастшавӣ ва тӯфони ақибнишинӣ.

2) Пойгоҳи математикӣ: Чӣ гуна андозаи ҳавзро ҳисоб кардан мумкин аст

Мо қонуни Литлро истифода мебарем: 'L = λ × W'. Барои ҳавз ин маънои онро дорад:
  • 'λ' ҷараёни миёнаи дархост (RPS) мебошад.
  • 'W' is пайвасти миёнаи ҳар як дархост банд аст (вақти хидмат, аз ҷумла таъхири шабака ва кори хадамоти дурдаст).
  • Андозаи ҳадди ақали ҳавз 'N _ min ≈ λ × W' мебошад.
  • Маржа барои вариантҳо ва p99 илова кунед: headroom 20-50%.
  • Мисол: 300 RPS, вақти миёнаи нигоҳдорӣ 40 мс → 'N _ min = 300 × 0. 04 = 12`. Бо маржаи 50%, 18 пайвастшавӣ → мебошанд.

Агар думҳо калон бошанд: 'W _ p95' ё 'W _ p99' -ро барои роҳҳои интиқодӣ дида бароед - ҳавзҳо калон мешаванд.

3) Принсипҳои умумии тарроҳӣ

1. Роҳи кӯтоҳи маълумот: истифодаи дубора (зинда мондан, HTTP/2/3 мултиплексинг).
2. Маҳдудияти параллелизм: беҳтар аст, ки зудтар рад кунед (429/503) нисбат ба пухтани ақиб.
3. Вақтсанҷҳо> ақибнишинӣ: Таътили хурд ва ақибнишинии нодирро таъин кунед.
4. Навбати муштариён нисбат ба навбати сервер кӯтоҳтар аст (зуд бо нокомӣ зуд).
5. Backpressure: вақте ки ҳавз пур аст - фавран NACK/хато/collbeck "баъдтар".
6. Ҷудокунии ҳавзҳо аз рӯи ҳадафҳо: DB, кэш, PSP беруна - ҳудуди онҳо.

4) HTTP/1. 1 против HTTP/2/3, зинда мондан

HTTP/1. 1: як дархости пайвастшавӣ дар як вақт (амалан); ба ҳавз бо пайвастҳои сершумор барои як мизбон ниёз дорад.
HTTP/2: мултиплекссияи ҷараён дар як TCP; алоқаҳои камтар, аммо HOL-бастани TCP ҳангоми гум шудани пакетҳо имконпазир аст.
HTTP/3 (QUIC): ҷараёни мустақилият аз болои UDP - мушкилоти камтар аз HOL, байтҳои тезтар.

Танзимотҳое, ки кӯмак мекунанд:
  • давомнокии 30-90s (аз рӯи профил), маҳдудияти дархостҳо барои пайвастшавӣ (истифодаи такрории зебо).
  • Пеш аз гармкунӣ (preconnect) дар оғози коргар.
  • Маҳдудияти ҷараёни максималии ҳар як HTTP/2 (мас. 100-200).
NGINX (нигоҳдории болооб):
nginx upstream backend {
server app-1:8080;
server app-2:8080;
keepalive 512;
keepalive_requests 1000;
keepalive_timeout 60s;
}
proxy_http_version 1. 1;
proxy_set_header Connection "";
Фиристанда (HTTP/2 ҳавз):
yaml http2_protocol_options:
max_concurrent_streams: 200 common_http_protocol_options:
idle_timeout: 60s max_connection_duration: 3600s

5) Ҳавзҳои DB: Pg

Ҳадаф маҳдуд кардани муомилоти рақобатӣ ва нигоҳ доштани пайвасти кӯтоҳ аст.

5. 1 PGBouncer (Postgre- SQL)

Модулҳо: 'сессия '/' транзаксия '/' изҳорот'. Барои API - бештар муомилот.
Параметрҳои муҳим инҳоянд: 'pool _ size', 'min _ pool _ size', 'reserve _ pool _ size', 'server _ idle _ timeout'.

ini
[databases]
appdb = host=pg-primary port=5432 dbname=appdb

[pgbouncer]
pool_mode = transaction max_client_conn = 5000 default_pool_size = 100 min_pool_size = 20 reserve_pool_size = 20 query_wait_timeout = 500ms server_idle_timeout = 60 server_reset_query = DISCARD ALL

5. 2 Ҳикари (Java)

Пайвастҳои хурд, зуд, танаффуси сахт.

properties dataSourceClassName=org. postgresql. ds. PGSimpleDataSource maximumPoolSize=30 minimumIdle=5 connectionTimeout=250 validationTimeout=200 idleTimeout=30000 maxLifetime=1800000 leakDetectionThreshold=5000
Қоидаҳо:
  • 'maximum' Pool ≈ Андозаи RPS × W × headroom '.
  • 'connection' Timeout 'hundreds миллисекундҳо, на сонияҳо.
  • Фаъол кардани муайянкунии ихроҷ.

5. 3 Гузаштан/гиреҳ/Python - намунаҳо

Бирав http. Мизоҷ (истифодаи такрорӣ + вақт):
go tr:= &http. Transport{
MaxIdleConns:    512,
MaxIdleConnsPerHost: 128,
IdleConnTimeout:   60 time. Second,
TLSHandshakeTimeout: 2 time. Second,
}
c:= &http. Client{
Transport: tr,
Timeout:  2 time. Second ,//general
}
Гиреҳ. js агенти зинда:
js const http = require('http');
const agent = new http. Agent({ keepAlive: true, maxSockets: 200, maxFreeSockets: 64, timeout: 60000 });
psycopg/SQLA ‌ lchemy (Python):
python engine = create_engine(
url, pool_size=30, max_overflow=10, pool_recycle=1800, pool_pre_ping=True, pool_timeout=0. 25
)

6) Навбати интизорӣ ва таъхири дум

Думҳо вақте рух медиҳанд, ки:
  • Ҳавз аз 'λ × W' → хурдтар аст, навбати пайвастшавӣ меафзояд.
  • Бе буфер ва маҳдудиятҳо нобаробарӣ (дарида) бор кунед.
  • Дархостҳои тӯлонӣ пайвастшавиро оғоз мекунанд ва HOL эҷод мекунанд.
Чораҳои муқобил:
  • Ҳавзҳои ҷудогона аз рӯи намуди дархост (зуд/суст).
  • Иҷрои вақти истироҳати муштарӣ. Агар мӯҳлати истифодааш гузашта бошад - НАК-и тез.
  • Кашфи берунӣ ва шикастани гардиш дар хатсайрҳо (Фиристанда, HAP-roxy).
  • Квотаҳо барои хатсайрҳои "вазнин", ҳавзи алоҳида барои ҳисобот/содирот.
Фиристандаи ноҳиявӣ (мисол):
yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 200 max_pending_requests: 100 max_requests: 1000 max_retries: 2

7) Вақти истироҳат ва ақибнишинӣ (тартиби дуруст)

1. Вақти пайвастшавӣ (кӯтоҳ: 50-250 мс дар дохили DC).
2. Вақти тамдиди дасти TLS (500-1000 мс вне DC).
3. Дархост/Вақти хондан (ба масири SLO наздиктар).
4. Retry: ҳадди аксар 1 вақт, танҳо барои усулҳои idempotent; jitter + бозгашт.
5. Буҷаи бозгашт: лимити глобалӣ ҳамчун фоизи RPS (масалан, ≤ 10%).

8) Зинда мондан, Нагле, протоколҳо

Ғайрифаъол кардани Nagle (TCP_NODELAY) барои RPC-ҳои хурд.
Дар ҷойҳои имконпазир HTTP-ро зинда нигоҳ доред.
Танҳо вақте ки шумо оқибатро мефаҳмед, TIME_WAIT - оҳанги 'истифодаи такрорӣ '/' истифодаи такрорӣ' -ро тамошо кунед; беҳтар - истифодаи дубора, на танзими ядро.
TLS - Истифодаи дубораи сессия ва ALPN.

9) Танзими OS/ядро ​ ​ (бо эҳтиёт)

'нет. аслӣ. somaxconn ',' холис. ипв4. ip_local_port_range', 'холис. ипв4. tcp_fin_timeout'.
Тавсифкунандагон: 'nofile' ≥ 64k як раванди прокси.
Тавозуни IRQ, GRO/LRO - аз рӯи профили трафик.
Афзалият - профил; танзими бидуни ченак аксар вақт зараровар аст.

10) Мушоҳида: чиро чен кардан лозим аст

Истифодаи ҳавз: банд/умумӣ, пайвасти p50/p95 то интизорӣ.
Дархостҳои парвоз ва вақти нигоҳдории онҳо (иловаро ба масир).
Буҷаи хатогӣ: таносуби такрорӣ.
Пайвастшавӣ Эҷод/Пӯшидан дар як сония.
TCP/TLS: SYN RTT, дастпӯшакҳо, истифодаи такрории сессия.
Для Б.Д.: пайвастҳои фаъол, интизорӣ, муомилоти тӯлонӣ, қуфлҳо.

Графики: "RPS vs ҳавзи интизорӣ", "тақсимоти вақт", "таносуби истифодаи дубора", "сафарҳои ноҳиявӣ".

11) Дастурҳои парванда

11. 1 дарвозаи API → пушти сар

HTTP/2 ба ақиб, 'max _ concurrent _ streams = 200'.
Ҳавзи 20-40 пайвастшавӣ барои як хидмат дар як гиреҳи дарвоза.
Вақтсанҷҳо: 100 мс пайваст кунед, барои ҳар як озмоиш 300-500м, 1-2s муштарак, 1 retry бо jitter.

11. 2 Хидмати Postgre

'pool _ mode = транзаксия', 'пешфарз _ pool _ size' аз рӯи формула (RPS × W × 1). 3).
Дар 'Connection' Timeout ≤ 250ms ', муомилоти кӯтоҳ (<100ms).
Дархостҳои гузоришдиҳии вазнин - ҳавзи алоҳида/нусхабардорӣ.

11. 3 GRPC дохилӣ

Як канал (HTTP/2) барои як мизбони ҳадаф бо маҳдудияти ришта 100-200.
Мӯҳлати ниҳоии RPC дар масири SLO, танҳо idempotent-ро бозпас гиред.
Ченакҳои дарозмуддати RPC ва ченакҳои нигоҳдорӣ.

12) Рӯйхати санҷиши амалисозӣ (0-30 рӯз)

0-7 рӯз

Андозагирии 'W' (вақти нигоҳдорӣ) дар хатсайрҳои асосӣ/муштариён.
Ҳисоб кунед 'N _ min = λ × W' and илова 30-50% сарлавҳа.
Имкон диҳед, ки танаффусҳои зинда ва кӯтоҳ пайваст карда шаванд.

8-20 рӯз

Ҳавзҳои ҷудогона (зуд/суст/беруна).
Навъи гардишгарон ва буҷаҳои бозсозӣ.
Панели панелро илова кунед: интизории ҳавз p95, таносуби истифодаи такрорӣ, ҳангоми парвоз.

21-30 рӯз

Сарборӣ бо таркишҳо, озмоиши бесарусомонӣ "афтиши ақиб" мегузарад.
Оптимизатсияи дум: ҷудокунии хатсайрҳои вазнин, кэшҳои маҳаллӣ.
Формулаҳо ва маҳдудиятҳои ҳуҷҷат дар runbook 'ax.

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

Андозаи ҳавз "ба таври тасодуфӣ" ва ҳеҷ сарпӯш нест.
Ба ҷои нокомии зуд, вақти интизории пайвасти калон → думҳои дароз.
Бисёре аз ақибнишинӣ бе ҷиттер ва аблаҳӣ → тӯфон.
Як ҳавзи муштарак барои ҳама намудҳои дархост.
Амалиётҳои тӯлонӣ пайвастшавиро (DB) → гуруснагии боқимондаро нигоҳ медоранд.
Маъюбон зинда ё бекорхобида аз ҳад кам ва маҳдудиятҳои churn ва афзоиши TTFB.

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

Интизории ҳавзи p95 дар prod <10% масири умумии p95.
Таносуби истифодаи такрорӣ (> 90% барои HTTP дохилӣ;> 80% барои беруна).
Вақти DB txn p95 <100-200 ms; фоизи муомилоти дароз <1%.
Меъёри такрорӣ <5% (ва буҷаи ≤), хатогиҳо бо сабаби танаффус устувор ва пешгӯишаванда мебошанд.
Ҳисоббаробаркунии ҳавз барои ҳамаи муштариёни муҳим.

15) Хулоса

Муттаҳидсозии самараноки пайвастшавӣ ин муҳандисии навбатӣ + интизоми вақт мебошад. Андозагирии 'W', ҳисоб кардани ҳавз ' W' with як маржа, фурӯзон кардани +, роҳҳои сустро ҷудо кунед, танаффуси кӯтоҳ ва бозгашти ҳадди аққалро бо ҷиттер нигоҳ доред. Мушоҳидаҳои "интизории ҳавз ва таъхир" -ро илова кунед - ва шумо TTFB-и паст, думи назоратшавандаи p99 ва муқовимати шадидро бидуни аз ҳад зиёд гарм кардан мегиред.

Contact

Тамос гиред

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

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

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

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

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