Yuklama testi: tizimni o'sishga qanday tayyorlash kerak

Yuklama testi umuman nima uchun kerak
Produksiyadagi nosozliklarning aksariyati koddagi xatolardan emas, balki tizim kutilganidan ko'proq so'rov olganidan kelib chiqadi. Marketpleys aksiya boshlaydi, bank yangi imkoniyat haqida push yuboradi, davlat xizmati yangiliklarga chiqadi — va bir necha daqiqada trafik o'nlab marta o'sadi. Oylar davomida sokin yukda ishlagan narsa to'satdan taymautlar bera boshlaydi, navbatlarni to'plydi va eng yomon holatda butunlay qulaydi.
Yuklama testi — bu shunday portlashning boshqariladigan mashqi. Siz oldindan, xavfsiz sharoitda bilib olasiz: tizim qancha bir vaqtdagi foydalanuvchini ko'tara oladi, uning shifti qayerda, aynan nima birinchi bo'lib sinadi va u nosozlik paytida o'zini qanday tutadi. Bu "biz o'z chegaramizni bilamiz va tayyormiz" bilan "yilning eng muhim aksiyasi paytida o'z chegaramizni bilib oldik" o'rtasidagi farqdir.
Qaysi ko'rsatkichlar haqiqatan ham muhim
Asosiy xato — faqat "ko'tardimi yo'qmi" ga qarash. Yuklama testi ko'rsatkichlar to'plamini beradi va har biri o'z hikoyasining bir qismini aytadi. Ulardan birortasini e'tiborsiz qoldirish — yolg'on ishonch hissini olish demakdir.
- Javob vaqti (latency) — va albatta o'rtacha emas, persentillarda. 200 ms o'rtacha 5% foydalanuvchi 4 soniya kutayotganini yashirishi mumkin. p50, p95 va p99 ga qarang — aynan "dumlar" sekin xizmat haqida taassurot shakllantiradi.
- O'tkazuvchanlik (throughput, RPS) — tizim degradatsiyasiz soniyada qancha so'rovni qayta ishlaydi. Bu sizning haqiqiy quvvat shiftingiz.
- Xatolar chastotasi (error rate) — 5xx javoblar, taymautlar, uzilgan ulanishlar ulushi. Yuk ostida xatolar o'sishi mutlaq sondan muhimroq.
- Resurslar foydalanilishi — CPU, xotira, disk, tarmoq, ma'lumotlar bazasiga ochiq ulanishlar soni. Bu raqamlarsiz aynan nima tor joy bo'lganini tushunmaysiz.
- To'yinish paytidagi xulq — yuk shiftdan oshganda nima bo'ladi: tizim asta-sekin degradatsiyaga uchraydimi yoki keskin qulaydimi.
Test turlari va stsenariylar
"Yuklama testi" — bu soyabon atama. Amalda turli maqsadlar uchun turli test turlari qo'llaniladi va ularni adashtirmaslik muhim.
Load-test kutilgan eng yuqori yukdagi ishni tekshiradi — masalan, soat-pik paytida haqiqatan kutilayotgan foydalanuvchilar soni. Stress-test nosozlik nuqtasini topish va tizim qanday qulashini tushunish uchun atayin chegaradan oshadi. Spike-test bir necha soniyada keskin portlashni modellashtiradi — push-yuborish yoki aksiya boshlanishining odatiy stsenariysi. Soak-test (chidamlilik) o'rtacha yukni ko'p soatlar ushlab turadi va besh daqiqada ko'rinmaydigan xotira oqishi hamda muammolarning sekin to'planishini ushlaydi.
Stsenariylar bitta endpointni tortib qo'yish emas, balki haqiqiy foydalanuvchi xulqini takrorlashi kerak. Haqiqiy foydalanuvchi tizimga kiradi, katalogni varaqlaydi, mahsulotni savatga soladi, buyurtma rasmiylashtiradi, to'laydi. Bu qadamlarning har biri tizimning turli qismlarini turlicha yuklaydi. Faqat bosh sahifaga uradigan test chiroyli raqamlarni ko'rsatadi va buyurtma rasmiylashtirish ko'taradimi-yo'qmi hech narsa aytmaydi. Harakatlar orasiga pauzalar (think time), o'qish va yozish operatsiyalarining turli nisbatini va albatta keshlangan javoblar emas, ma'lumotlar bazasi bilan haqiqiy ishni qo'ying.
Tor joylar odatda qayerda yashiringan
Tajribamizga ko'ra, tor joy deyarli hech qachon kutilgan yerda emas. Ko'pincha muammo "sekin kodda" emas, balki infratuzilma va ma'lumotlar bilan ishlashda.
- Ma'lumotlar bazasi — eng tez-tez aybdor. Yo'q indekslar, N+1 so'rovlar, raqobatli yozishda bloklash, ulanishlar puli tugashi. Yuk ostida baza hammadan oldin shiftga uriladi.
- Ulanish va oqim pullari — ilova o'zi tirik, lekin bazaga yoki tashqi API ga bir vaqtdagi ulanishlar soni cheklangan va so'rovlar navbatga tizib qo'yiladi.
- Tashqi integratsiyalar — to'lov shlyuzlari, SMS-provayderlar, uchinchi tomon API'lari. Ularning limitlari va taymautlari sizning limitlaringizga aylanadi. Yuk ostida sekin tashqi xizmat sizning oqimlaringizni osib qo'yadi.
- Keshlashning yo'qligi yoki noto'g'riligi — har so'rov soniyalarga keshlash mumkin bo'lgan narsani qayta hisoblaydi.
- Gorizontal masshtablashsiz bitta server — O'zbekistondagi loyihalarning tez-tez uchraydigan realligi, bunda start bitta VPS'da qilinadi. Ma'lum vaqtgacha bu normal, lekin shift tez keladi va u haqida oldindan bilish kerak.
Ishga tushirish yoki aksiyaga tayyorgarlik
Oldinda aniq voqea bo'lganda — ommaviy start, bayramga savdo, reklama kampaniyasi — testlash ishga tushirish rejasining qismiga aylanadi. Kutilayotgan trafikni baholashdan boshlang: o'tgan piklar ma'lumotlari, yuborish auditoriyasi hajmi yoki marketing prognozi asosida. Kamida ikki barobar zaxira qo'ying — reallik deyarli har doim optimistik prognozdan oshadi.
Konfiguratsiya va ma'lumotlar hajmi bo'yicha produksiyaga imkon qadar yaqin muhitda test qiling. Dasturchi noutbukidagi test hech narsani anglatmaydi. Vositaning o'z cheklovlariga urilmaslik uchun yukni bir necha manbadan ishga tushiring. Eng muhimi — tor joyni topib bartaraf etganingizdan keyin testni takrorlang: bitta tor joyni tuzatish ko'pincha uni keyingi darajaga ko'chiradi xolos.
Alohida nosozlik holatiga reja tayyorlang: monitoring va alertlarni oldindan sozlang, ishga tushirish paytida kim navbatchi ekanligini aniqlang, graceful degradation mexanizmlarini o'ylab qo'ying — pik ostida og'ir majburiy bo'lmagan funksiyalarni o'chirish, sinxron qayta ishlash o'rniga navbatlar, qulash o'rniga vaqtinchalik o'rinbosarlar. Ortiqcha yuk ostida biroz qisqartirilgan funksionallikni beradigan tizim oq ekran ko'rsatadiganidan necha barobar yaxshi.
Eng muhimi
Yuklama testi — bu bir martalik belgi emas, balki o'z tizimingiz chegaralari haqidagi haqiqatni oldindan bilib, o'sishni tayyor holda kutib olish usuli. Persentillardagi ko'rsatkichlar, realistik stsenariylar, jangovar ma'lumotlar hajmida testlash va tor joylarni iterativ bartaraf etish reklama byudjetiga sotib olib bo'lmaydigan narsani beradi — eng muhim daqiqada tizim tushib qolmasligiga ishonch. OneDev'da biz o'sishga mo'ljallangan arxitekturani loyihalash, yuklama testini o'tkazish va tizimni ishga tushirish yoki mavsumiy pikka tayyorlashda yordam beramiz. Agar oldinda muhim start bo'lsa yoki siz allaqachon chegarani his qilayotgan bo'lsangiz — keling, loyihangizni muhokama qilamiz.
Yuklama testini qachon o'tkazish kerak?
Yuklama testi oddiy testdan nimasi bilan farq qiladi?
Qancha bir vaqtdagi foydalanuvchini hisobga olish kerak?
Eng ko'p nima tor joy bo'ladi?
To'g'ridan-to'g'ri produksiyada test qilsa bo'ladimi?
Agar tizim testni ko'tara olmasa nima qilish kerak?
Shunga o'xshash tizim kerakmi yoki loyihani muhokama qilmoqchimisiz?
Vazifani tasvirlab bering — arxitektura, texnik yondashuv va ish rejasini taklif qilamiz. Boshlash uchun ko'pincha qisqa qo'ng'iroq yetarli.
Loyihani muhokama qilish