Bosh sahifa Wiki Concurrency limit

Concurrency limit

Concurrency limit — tizim yoki uning ma’lum qismida bir vaqtda bajarilishi mumkin bo‘lgan ishlar soniga qo‘yilgan chegaradir. U so‘rov, ma’lumotlar bazasi amali, tashqi xizmat chaqirig‘i yoki fon vazifalari uchun qo‘llanishi mumkin. Maqsad cheklangan CPU, xotira, ulanish va ishchi oqimlarni ortiqcha yukdan himoya qilib, kechikishning nazoratsiz o‘sishini to‘xtatishdir.

Limit N bo‘lsa, N ta ish faol bajariladi. Yangi ish bo‘sh joy paydo bo‘lguncha navbatda kutishi, darhol rad etilishi yoki boshqa instansiyaga yo‘naltirilishi mumkin. Cheksiz navbat muammoni yashiradi: kelish tezligi xizmat tezligidan yuqori bo‘lsa, navbat va kutish vaqti doimiy o‘sadi. Shuning uchun concurrency limit bilan birga navbat sig‘imi va kutish deadline’i ham belgilanadi.

Little qonuni barqaror tizimda o‘rtacha faol ishlar soni kelish tezligi va o‘rtacha tizimda qolish vaqtining ko‘paytmasiga bog‘liqligini ko‘rsatadi. Xizmat sekinlashganda bir xil trafik ko‘proq ishni parallel holatda ushlab turadi. Limit bo‘lmasa, bu resurs tugashiga va cascading failurega olib keladi. Limit ortiqcha ishni oldinroq boshqariladigan tarzda rad etadi.

Amalga oshirish usullari

Semaphore har bir ish boshlanishida ruxsat oladi va tugaganda uni qaytaradi. Worker pool parallel ishchilar sonini tabiiy ravishda cheklaydi. Ma’lumotlar bazasi connection pool ham amalda concurrency chegarasi bo‘lishi mumkin, lekin havzani kutayotgan oqimlar uchun alohida deadline zarur. Taqsimlangan xizmatda har instansiya lokal limit qo‘llashi yoki umumiy token koordinatsiyasidan foydalanishi mumkin.

Global limit butun resursni himoya qiladi, per-tenant limit esa bitta mijozning boshqalarni siqib chiqarishiga yo‘l qo‘ymaydi. Endpoint yoki bog‘liqlik bo‘yicha alohida limitlar tez va sekin ishlarni ajratadi. Ustuvor navbatlar muhim so‘rovga joy saqlashi mumkin, ammo past ustuvorlikdagi ishning abadiy och qolmasligi uchun adolat siyosati kerak.

Limitni moslash

Juda past limit throughputni sun’iy kamaytiradi va resurslarni bo‘sh qoldiradi. Juda yuqori limit esa kontekst almashinuvi, xotira va quyi xizmat yukini oshiradi. Boshlang‘ich qiymat yuk sinovi orqali, kechikish percentillari va resurs to‘yinganligi asosida tanlanadi. Adaptiv algoritm kuzatilgan kechikish yoki xato darajasiga qarab limitni sekin oshirib, tiqilinch belgisi paydo bo‘lsa tez kamaytirishi mumkin.

Metrikalarda faol ishlar, limitdan foydalanish, navbat uzunligi, navbat kutish vaqti, rad etilgan ishlar va xizmat vaqti ajratiladi. Ruxsat har qanday tugash yo‘lida, jumladan xato va cancellationda ham qaytarilishi shart; aks holda permit sizib chiqishi tizimni asta-sekin to‘xtatadi. Limit faqat yuqori qatlamda emas, himoyalanayotgan tor resursga yaqin joyda ham qo‘llansa samaraliroq bo‘ladi.

Taqsimlangan limit masalasi

Har biri 100 ta parallel ishga ruxsat beradigan o‘nta instansiya quyi xizmatga jami 1000 ta chaqiruv yuborishi mumkin. Autoscaling instansiyalar sonini oshirganda umumiy concurrency ham tasodifan ko‘payadi. Global budjet zarur bo‘lsa, limit instansiyalar orasida taqsimlanadi yoki quyi xizmat o‘z kirishida mustaqil himoya qo‘yadi. Markaziy koordinatsiya aniqroq, lekin o‘zi kechikish va mavjudlik bog‘liqligiga aylanadi. Amaliy tizim ko‘pincha lokal tez limit, server tomondagi qat’iy limit va rate limitni birga ishlatadi. Deploy paytida eski va yangi instansiyalar birga ishlashi ham hisobga olinadi.

Limit faqat ish boshlanishini boshqaradi; bitta ish ichida cheksiz xotira yoki fan-out yaratishni to‘xtatmaydi. Shu sababli per-request resurs budjeti va quyi chaqiruv limiti ham zarur.

Bog‘liq tushunchalar

Semaphore, Worker pool, Backpressure, Queue, Little’s Law, Load shedding, Cascading failure