Return to site

5 teesiä suorituskyvyn parantamisesta

1. Suorituskykyasioita ei ratkaista arvailemalla

Olen kuullut lukemattomia kertoja ihmisten arvailuja siitä, mikä on tietyn järjestelmän huonon suorituskyvyn suurin syy. Arvaus on lähes aina täysin väärä. Jos sen perusteella käyttäisi ihmisten aikaa suorituskyvyn "parantamiseen" olisi parhaassa tapauksessa tuloksena paljon turhaa työtä ja huonoimmassa tapauksessa turhia monimutkaisia muutoksia softan toimintaan.

Mittaus on aina ensimmäinen toimenpide, jolla lähdetään avaamaan ongelmia. Mittausta voi tehdä yleisellä tasolla eli mittaamalla "seinäkellolla" suoritukseen kuluvaa aikaa. Lisäksi mittausta voidaan tehdä tarkemmalla tasolla profiloimalla yksittäisiä järjestelmän osia, jolloin saadaan tarkempaa tietoa järjestelmän toiminnasta ja sen kuluttamista resursseista (prosessori, muisti, levy, verkko). Yleensä profiloinnin seurauksena saadaan hyvä kuva ongelmakohdista, joihin korjaavat toimenpiteet voidaan kohdistaa.

Kuormitustestauksessa tutkitaan, miten järjestelmä toimii kuorman alla ja saadaan tietoa siitä, vastaako järjestelmän kapasiteetti vaadittua. Tämä voi tuoda esiin virheitä järjestelmän toiminnassa, johtuen esimerkiksi synkronoinnista. Monesti kuormitustestauksessa mennäänkin sovelluksen toiminnallisuuden testaamisen puolelle varsinaisen suorituskykytestauksen sijaan. 

2. Huonon suorituskyvyn juurisyyt ovat useimmiten pieniä yksityiskohtia

Välillä huono suorituskyky voi johtua täysin väärästä kokonaisarkkitehtuurista, mutta useimmiten se johtuu verrattain pienistä yksityiskohdista. Esimerkkitapauksia löytyy, alla muutamia.

-Taustajärjestelmää kutsutaan loopissa 100 kertaa kun yksi kerta riittäisi.

-Koko järjestelmän loggaustaso on unohtunut debug -tasolle kun se pitäisi olla warning tasolla.

-Indeksi puuttuu olennaisesta tietokannan taulusta. 

Kaikissa näissä tapauksissa korjaava toimenpide on hyvin pieni muutos, jolla on dramaattinen vaikutus koko järjestelmän toimintaan.

3. Suorituskyvyn optimointiin ei kannata keskittyä liian aikaisessa vaiheessa

Suorituskyvyn optimointiin ei kannata ryhtyä ennen kuin on sen aika.  Suorituskyvyn parantamiseksi tehtävillä pienilläkin muutoksilla on usein järjestelmää monimutkaistava vaikutus. Niinpä järjestelmän oikea toiminta sen toiminnallisten määritysten mukaisesti on hyvä pitää ensisijaisena tavoitteena. Vasta tämän jälkeen on järkevää optimoida suorituskykyä. Jos optimointi aloitetaan liian aikaisessa vaiheessa, tehdään usein turhaa työtä ja monimutkaistetaan järjestelmän rakenteita. Se taas hidastaa myöhempää kehitystä. 

Vaikka suorituskyvyn optimoinnin aloituksessa ei kannata hätiköidä, on suorituskykyasiat hyvä pitää mielessä koko määrittelyn, suunnittelun ja toteutuksen ajan.  Suorituskykyä voi toki mitata pitkin matkaa, vaikka optimointia ei tekisikään. Samoin suorituskyky on tärkeää pitää mielessä jatkuvasti yleisarkkitehtuuria suunniteltaessa.

4. Suorituskykyä ei voi ratkaista (vain) raudalla

Jos rahaa riittää, suorituskykyongelmiin on aluksi helppo vastata "rautaa rajalle" –tekniikalla. Usein käy kuitenkin niin, että tietyn rajan jälkeen mikään määrä muistia tai prosessoreita ei pysty ratkaisemaan ongelmia. Ongelmien oikeat syyt on selvitettävä, jotta ymmärretään, onko rauta oikea lääke. Jos esimerkiksi sovellusarkkitehtuuri on väärä suhteutettuna käyttäjien tai datan määrään, ei mikään määrä rautaa tule ratkaisemaan ongelmia.

5. Suorituskyvyn parantamisen prosessi on sarja testejä

Järjestelmän suorituskyvyn parantaminen ei ole kertaponnistus vaan kärsivällisyyttä vaativa prosessi. Käytännössä tämä prosessi on sarja testejä, joihin sisältyy mittaus, korjaavat toimenpiteet ja uusi mittaus. Näitä jatketaan, kunnes ollaan halutulla tasolla suorituskyvyssä tai yksittäisen asian korjaaminen ei enää tuota merkittävää parannusta tilanteeseen.

Kirjoittanut Reflectorin arkkitehti Vesa Saarinen (https://fi.linkedin.com/in/vesamsaarinen), jolla on pitkä kokemus mm. suorituskyvyn parantamisesta.

All Posts
×

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OKSubscriptions powered by Strikingly