Nõuandeid mastaapsema veebiteenuse käivitajale

Ardi Jürgens
RSS: Jaga:

Aegade jooksul on meile olnud rõõm teenindada väga suurt hulka kliente ja elada kaasa mitmete uute veebiteenuste käivitamisele. Väga paljudel juhtudel on need edukad, kuid sekka sattub ka selliseid, mille tegijad ühel hetkel hea meelega aja tagasi keeraks ja stardijoone taha tagasi vantsiks.

Nimelt on teenuste käivitamise puhul tihti probleemiks see, et edukale tulevikule minnakse vastu puudulike vahenditega, mis meie valdkonnas tähendab enamasti aladimensioneeritud riistvararessursse või kehvasti kirjutatud rakendusi.

Kuna ma ise tarkvaraarenduses end väga koduselt ei tunne, siis heietan siinkohal eelkõige sel teemal, kuidas vältida enamlevinud riistvaralisi pudelikaelu, mille taha tihtilugu toppama jäädakse.

Vähene mälu hulk

Minu esmane soovitus on, et teenust käitavale serverile tuleb kindlasti eralda mõistlikus koguses põhimälu (RAM). Rusikareegliks on “mida rohkem, seda uhkem”. Suur põhimälu hulk võimaldab märgatavalt vähenda aeglasemate sisend-väljund (I/O) seadmete poole pöördumisest tingitud viivitusi. Tänapäevased operatsiooni- ja andmebaasisüsteemid on “mihklid “ enamkasutatavaid andmeid erinevatesse puhvritesse koguma ja ühel hetkel on tõenäosus, et teenuse poolt päritavad andmed leitakse kettasüsteemi asemel serveri mälus asetsevast puhvrist, väga suur.

Seda, kui suur on kiiruste vahe mälu ja kettasüsteemi vahel, iseloomustavad ehk järgmised arvud: süsteemis, kus on kasutusel 45 nm Intel Nehalem-EP protsessor võib põhimälu latentsusaeg olla näiteks 50 nanosekundit, samas kettasüsteemi poole pöördumise puhul mõõdetakse latentsusaega juba millisekundites. Üks nanosekund on miljardik sekundist, millisekund aga juba tuhandik, seega vahe mälu ja kettasüsteemi latentsi vahel on miljonikordne. Reaalsete rakenduste kontekstis miljonikordsetest vahedest rääkimine oleks selge liialdus, kuid drastiline number aitab ehk lihtsamini kohale toimetada sõnumi, et põhimälu on harva liiga palju.

Kettasüsteemi kiirus ja läbilaskevõime

Kui kettasüsteemist rääkida, siis on lahendusi, mille puhul vale kettasüsteemi valik võib väga valusalt kätte maksta.

Tüüpiliselt on tegu kas failisüsteemis suurt hulka infosõlmi (inode) tarbivate rakenduste või mahukate online-tehingutöötlusele (On-line Transaction Processing) orienteeritud andmebaasidega, mida iseloomustavad INSERT, UPDATE, ja DELETE käsude suur hulk ja/või ressursinõudlikud relatsioonide liitmised (join).

Sellistel juhtudel hakkavad probleeme põhjustama faktorid nagu aeglane kõvaketta lugemispea liikumiskiirus andmete otsimisel, mis limiteerib sekundis teostatavate sisend-väljund operatsioonide arvu (IOPS) ja ketta pöörlemisega seotud latentsusaeg, mis piirab läbilaskevõimet (MB/s).

Väikestes serverites, kus kettasüsteemile pole suurt koormust, võib küll kasutada 7200 RPM või 10 000 RPM SATA kõvakettaid, kuid parima jõudluse tagab tänapäeval 10 000 RPM või 15 000 RPM SAS (Serial Attached SCSI) ketaste kasutamine. Iseenesestmõistetavalt on enamasti ka need kasulik ühendada veakindlasse ja jõudlust lisavasse RAID konfiguratsiooni nagu RAID 10 või RAID 6.

Protsessor

Protsessoritega on õnneks veidi lihtsam, enamus veebiteenuste käivitajaid tundub tänaseks olevat aru saanud, et korraliku vahemälu ja kõrge taktsagedusega Inteli Xeon seeria E (mainstream) ja X (performance) tähisega protsessoriga pole kriitilisema serveri puhul väga võimalik puusse panna. Loomulikult, mida paremat protsessorit eelarve kannatab, seda parem. 
Kuuldavasti on Inteli päris värsketel protsessoritel uus tähistussüsteem, see ehk võib mõneks ajaks taas vett segasemaks muuta, aga küll me harjume 🙂

Kuidas probleeme ennetada?

Ressursside hulga suhtes mõtestud otse tegemiseks ja probleemide eos välistamiseks on üks läbiproovitud meetod – veebirakenduse vajaduste eelnev mõõdistamine.

Testimaks ressursivajadust tuleks korraldada test, mille käigus mõõdetakse rakenduse, seda teenindava süsteemi ja komponentide jõudlust ning reaktsiooniaega eelnevalt määratletud tingimustel, näiteks kindlaks arvu paralleelsete kasutajate korral.

Sellise testi käigus on lisaks ressursinõudlikkusele võimalik tuvastada ka olulisi pudelikaelu, ja märkida maha süsteemi normaalse toimimisega seotud näitajaid.

Elementaarne test ei pea kindlasti olema väga kulukas või keerukas protseduur, selleks on vaja pealehakkamist, platvormi millel test läbi viia, võimalust ressurikasutust jälgida ja vahendit, millega testida.

Lihtsama veebirakenduse testi saab läbi viia näiteks Apache veebiserveri “tööriistakasti” kuuluva ab nimelise töövahendiga. See on kättesaadav pea kõigile Linuxi ja Windowsi kasutajatele. Ab dokumentatsiooni leiate aadressilt http://httpd.apache.org/docs/2.2/programs/ab.html.

Lisaks on loomulikult tänapäeva veebiteenuste keskses maailmas olemas vastavad pilveteenused. Omalt osalt oleme kuulnud palju häid sõnu lausutavat LoadStorm nimelise teenuse kohta, millel abil on elementaarsed testid võimalik läbi viia ka tasuta.

Testimiseks vajaliku serveriteenuse võite võtta Zonest, oleme üritanud võimalikult paljudele sooviavaldajatele korraldada testperioode nii erinevates privaatserverites kui ka VPS serverites. VPS server, mis pakub võimaluse kättesaadavate ressurside hulka kiirelt muuta, on selleks otstarbeks muidugi pea ideaalne.

Milliseid nõuandeid on aga teil värske missioonikriitilise veebiteenuse käivitajale?

Populaarsed postitused

Kliendi edulugu: kuidas muster.ee tõstis e-poe müüki, kui leidis Nutika Pilveserveri

Katrin Sulg
E-kaubandus on viimastel aastatel muutunud järjest olulisemaks. Konkurentsitihedas keskkonnas saavad veebilehe kiirus ja töökindlus määravaks. Muster.ee...

Kas domeen kuulub ikka sulle? ICANNi uus reegel sunnib vigaseid andmeid parandama

Jaanus Putting
Alates mai lõpust jõustub ICANNi uus poliitika, mis mõjutab geneeriliste domeenide omanikke. Kes on domeeni seaduslik omanik, määratakse nüüdsest...

Partner soovitab: Kuidas targalt integreerida ja hallata infosüsteeme

Acty
Tänapäeva digitaalses maailmas ei toimi ükski arvestatav organisatsioon enam iseseisvate tarkvaratükkide najal. Infosüsteemide integratsioon on muutunud...

Miks valida .EU domeen nüüd ja täna?

Jaanus Putting
Me elame ajastul, mil globaalsed jõujooned muutuvad kiiremini kui kunagi varem. Kui Euroopa on astunud ühisturuna üha tugevama ja sidusama tegutsemise...