Stress testas – loadimpact.com

Ar bandėte sau ar užsakovams atsakyti į klausimą „Kiek vartotojų atlaikys svetainė?“ arba „Kokio serverio reikia norint, kad atlaikytų X vartotojų?„. Jei taip – tikriausia žinote, kad vienareikšmiškai atsakyti pakankamai sunku, tam reikia realios aplinkos ir didelio vartotojų kiekio. Nusiperkame kažkokį serverį ir imamės srauto generatoriaus. Dažna klaida yra naudoti kažką panašaus į „ab -kc 10 -t 30 http://blog.mysql.lt/„, nes tai kraus vieną ir tą patį url adresą, taigi niekaip nesukurs realios situacijos (tai skaudžiai patyriau savo kailiu). Į pagalbą gali ateiti vienas iš mano senai rastų servisų https://loadimpact.com

Servisas yra mokamas, tačiau kas mėnesį gaunate kažkokį kiekį kreditų kuriuos galite panaudoti testams, taigi nemokamai išbandyti tikrai galėsite. Šiame straipsnyje trumpai peržvelgsime serviso galimybes ir pateiksiu keletą testo rezultatų.

Taigi pirmiausia sukuriame vartotojo scenarijų. Tai yra veiksmai kuriuos vartotojas atlieka svetainėje. Galite rankiniu būdu apsirašyti visus veiksmus kuriuos turi atlikti naršyklė, tačiau jei norite kažką greitai patestuoti – galite pasinaudoti puikia galimybe įrašyti Jūsų vykdomus veiksmus svetainėje. Tam reikia sekti nurodymus ekrane, paprašys nustatyti naršyklėje proxy serverį ir pradėjus įrašinėti veiksmus būsite nukreipti automatiškai į reikiamą svetainę ir ten turėsite padaryti tai ką daro „tipinis testuojamas vartotojas“. Esant reikalui galite prigaminti daug skirtingų vartotojų scenarijų.

Tolimesnis žingsnis sukurti testavimo konfigūraciją. Tai pirmiausia turi pasirinkti kokie vartotojai „ateis“ pas Jus į svetainę, VU ar SBU. VU (Virtual User) – yra toks vartotojas kuris gali atidaryti tik vieną susijungimą su Jūsų serveriu, jei vartotojui reikia atsisiųsti HTML ir 3 paveiksliukus – jis tai darys iš eilės. SBU (Simulated Browser User) – toks vartotojas gali atidaryti kelis susijungimus vienu metu, tai aišku pagerins krovimosi laikus, bet padidins serverio apkrovą. Savaime suprantama SBU yra artimiausias variantas realybei, tačiau kainuos daugiau kreditų.
Pasirinkę vartotojų tipą numatome apkrovimo trukmę ir dydį. Galima sudėlioti ilgai trunkančius testus kurie imituos realų piką ir atoslūgį, jei Jums svarbu patikrinti ar sistema galės prisitaikyti prie skirtingų sąlygų.
Paskutini žingsnis yra pasirinkti vartotojo scenarijus. Čia galime rinktis srauto generatorius iš 7 duomenų centrų visame pasaulyje. Pasirinkę duomenų centrą renkamės kurį vartotojo scenarijų jis vykdys, taip kiek procentų viso srauto sudarys konkretus generatorius. Tai labai pravers jei pavyzdžiui turite parduotuvę kurioje tik 10% vartotojų perka kažką, o visi kiti dairosi kainų ir tiek.
Štai ir viskas testas paruoštas. Paveikslėliuose pateikta konfigūracija kainuotų nei daug nei mažai: 174 kreditus (straipsnio rašymo metu: 100 Credits = $225, arba 500 Credits = $1050). Tikrai nėra pigu, tačiau kartais sumokėti tiek tikrai verta vietoje to, kad sistema neatlaikys pačiu netinkamiausiu metu.
Taigi einame prie smagiausios rezultatų dalies.

Kiekvienas testas turi savo unikalų url adresą kurį galite persiųsti atsakingiems asmenims arba užsakovams. Štai dviejų testų rezultatai kuriuos paleidau ant blog.mysql.lt
http://loadimpact.com/load-test/blog.mysql.lt-51677c9be2cf2c0bdb1af8f05f562606 http://loadimpact.com/load-test/blog.mysql.lt-9debad28b4e6bb02ead62f19ada27c14
Kaip matome šis blogas testą atlaikė visai neblogai. Abiejuose testuose naudoti skirtingi vartotojų tipai, pirmame – SBU, antrame – VU. Krovimosi laikai akivaizdžiai skiriasi, ir su SBU galime drąsiai jaustis atėjus 50 vartotojų, toliau grafikas šokteli į viršų, tai reiškia kad pasiekiame ribą kai serveris dar dirba normaliu režimu. Pasiekus 70 vartotojų ribą grafikas smunka žemyn ir pasidaro nebe toks tolygus, tai signalizuoja apie problemas, kai kurios užklausos gali būti tiesiog neaptarnaujamos, galbūt pasirodo klaidų pranešimai. Testų rezultatuose gali keisti grafiką kaip tik norite, visi duomenys yra užfiksuoti, todėl galite analizuoti juos tiek laiko kiek reikia.

Neatsispyriau pagundai išbandyti paleisti testą ant Amazon „micro“ instance su instaliuota magento parduotuve. Nedariau jokių optimizacijų, tik norėjau parodyti kas gali būti jeigu pervertinsite savo jėgas ir paleisite per daug vartotojų:

Tą patį padariau ir su „large“ instance tik dar papildomai paoptimizavau kai kuriuos dalykus, pvz var katalogą perkėliau į RAM, rimtesnis my.cnf, APC cache, gzip ir pan. Tačiau rezultatai irgi pernelyg nenudžiugino (http://loadimpact.com/load-test/ec2-184-73-113-57.compute-1.amazonaws.com-cfbb01c3a80320effe82cdf5c6bc154c), tačiau juos bent normaliai sugeneravo, nes su micro instace grafikai gavosi tušti, serveris lūžo.

Taigi, jei turite paslaugą kuri turi patikimai veikti esant didelėms apkrovoms, nepamirškite patestuoti 😉

Žygimantas

Lead developer at Soundest. Zend Certified Engineer.

More Posts - Website

Žymos: , , , ,

2 komentarai

  1. as

    Zygi, as tau pavydziu tavo ziniu… ka daryt? :)

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *

Galite naudoti šias HTML žymas ir atributus: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>