Suorituskyvyn pullonkaulojen löytäminen ja optimointi v 1.0. Ilkka Myllylä

Samankaltaiset tiedostot
Suorituskyvyn varmistaminen sovelluskehityksen eri vaiheissa Paavo Häkkinen, Presales Teamleader Compuware Finland

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä:

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

TERADATAN JA SAS DI STUDION YHTEISELO CASE LÄHITAPIOLA

Ohjelmiston toteutussuunnitelma

Sovellusarkkitehtuurit

Suorituskyky- ja tietoturvatestaus Kelassa

HAKURATKAISUN ANATOMIA - KURKISTUS PELLIN ALLE

HELIA 1 (15) Outi Virkki Tiedonhallinta

Televerkon verkkotietojärjestelm

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

FuturaPlan. Järjestelmävaatimukset

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Työpöytävirtualisointi

DB2 v9.7. Pullonkaulojen metsästys, metodeja ja. esimerkkejä elävästä elämästä

CASE STOCKMANN : Laadunvarmistuksen merkitys verkkokauppapalvelun lanseerauksessa. Ilkka Pirttimaa, Head Of Technology, Stockmann IT

Facta palvelimien uusiminen Helsingin kaupunki

TK Palvelinympäristö

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

KRYSP-rajapintojen suorituskykytestaukset. Jari Torvinen

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

Pikaopas. Ohjeiden etsiminen Hae ohjesisältöä napsauttamalla kysymysmerkkiä.

IIO10200 Tietokantaohjelmointi (4 op)

TK Palvelinympäristö

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Tekniikka ja kehittäminen Minna Hillebrand Pauli Kujala

Testidatan generointi

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Testausautomaation mahdollisuudet käyttöliittymän testauksessa. Anssi Pekkarinen

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

Pilvi 9.0. Arkkitehtuuri. Esimerkki arkkitehtuurit

Tikon Ostolaskujenkäsittely versio SP1

811312A Tietorakenteet ja algoritmit I Johdanto

Työasema- ja palvelinarkkitehtuurit IC Storage. Storage - trendit. 5 opintopistettä. Petri Nuutinen

Liikenneteorian tehtävä

IIO10200 TIETOKANTAOHJELMOINTI (4 OP) OPINTOJAKSON ESITTELY JOUNI HUOTARI

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

HOJ J2EE & EJB & SOAP &...

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Tekninen suunnitelma - StatbeatMOBILE

Microsoft Visual Studio 2005

Videotoisto Nexus 7 tableteilla: Android 4.4 KitKat selvästi edellistä versiota heikompi

Sivuston nopeus. Sivullasi on 2 uudelleenohjausta. Uudelleenohjaukset viivästyttävät sivun lataamista.

Rajattomat tietoverkot ja niiden rooli pilvipalveluissa. Jukka Nurmi Teknologiajohtaja Cisco Finland

Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita.

Tietohallinto. Risto Laakkonen, Tuotantopäällikkö. Arki sujuu helpommin, kun apu löytyy läheltä.

TöyssyTutka. Kilpailutyö Apps4Finland 2011 Ideasarjaan

Kiinnostuspohjainen topologian hallinta järjestämättömissä vertaisverkoissa

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

AS Automaatio- ja systeemitekniikan projektityöt

Tapahtuipa Testaajalle...

CQRS, -ES, PACS, DICOM, WTF?

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus

Internetin hyödyt ja vaarat. Miten nettiä käytetään tehokkaasti hyväksi?

Tekniset vaatimukset Tikon 6.4.1

Tekniset vaatimukset Tikon 6.5.0

Convergence of messaging

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Fyysinen suunnittelu

FYYSINEN SUUNNITTELU

WINDOWS 7 ASETUKSET FUTURSOFT OHJELMIEN KÄYTTÖÄ VARTEN

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

KODAK EIM & RIM VIParchive Ratkaisut

Järjestelmänvalvontaopas

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

- Jarjestelmaasiantuntija Markku Jaatinen

Verkkopokerijärjestelmä. Loppuraportti Ryhmä Kanat Ohjelmistotuotantoprojekti, syksy 2008

Test-Driven Development

Virtualisointi Käytännön kokemuksia järjestelmien virtualisoinnista

HSMT J2EE & EJB & SOAP &...

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Helsinki Testbedin säätuotteet tänään ja tulevaisuudessa

Poweria analytiikkaan

Javan asennus ja ohjeita ongelmatilanteisiin

Integrointi. Ohjelmistotekniikka kevät 2003

Virtualisoi viisaasti paranna palvelua. Iikka Taanila Systems Architect IBM Systems and Technology Group

Webropol-kyselyt. Tarja Heikkilä

ZENworks Application Virtualization 11

Aditro Tikon ostolaskujen käsittely versio 6.2.0

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Advanced Test Automation for Complex Software-Intensive Systems

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

TIETOKANNAN SUUNNITTELU

Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä ! Java luokkia n. 5000

Käytin tehtävän tekemiseen Xubuntu käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.


JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Liikkuvien työkoneiden etäseuranta

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Työasemien hallinta Microsoft System Center Configuration Manager Jarno Mäki Head of Training Operations M.Eng, MCT, MCSE:Security, MCTS

VIENET JULKAISUJÄRJESTELMÄLLÄ TOTEUTETTUJEN INTERNET-SIVUJEN YLLÄPITO-OHJE

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Tekninen suunnitelma - StatbeatMOBILE

Oliotietokannat. Nääsvillen Oliopäivät Pekka Kähkipuro Kehitysjohtaja, FT

Harjoitustyö Case - HelpDesk

Sivuston nopeus. Tiivistämällä resursseja gzip- tai deflate-koodilla voit vähentää verkon kautta lähetettävien tavujen määrää.

Suunnitteluvaihe prosessissa

Transkriptio:

Suorituskyvyn pullonkaulojen löytäminen ja optimointi v 1.0 Ilkka Myllylä

Sisältö! Johdanto! Pullonkaulat ja suorituskyvyn optimointi! Case esimerkkejä 2

Johdanto v 1.0

Onko skaalautuvuus webissä ongelma? Tutkittua tietoa (Lähde : Newport Group Inc.)! Tuotannossa skaalautuvuus! vastasi odotuksia 48%! oli heikompi kun odotettiin 52% (keskimäärin 30% alle odotetun)! Aikataulu petti ja tästä aiheutuneet kustannukset keskimäärin! vastasi odotuksia 22 pv ja 400 Tmk! oli heikompi kuin odotettiin 46 pv ja 850 Tmk! eli eroa 24 pv ja 450 Tmk keskimäärin! Aikataulu, kustannukset ja suorituskyky kuten suunniteltu?! 15% kaikista web-sovelluksista (Lähde : Gartner Group)! Mistä löytyy selitys eroille? Testauksesta! 4

Suorituskykytestien ajoitus web-sovelluksissa 70 60 50 40 30 20 10 0 Suorituskykytestauksen aloitus vertailuryhmissä 0 21 Määrittely ja suunnitteluvaihees sa 6 Toteutuksen alkuvaiheessa 35 38 26 Toteutuksen loppuvaiheessa 8 0 Käyttöönoton jälkeen Ei skaalautunut Skaalautui kuten odotettiin 60 Ei lainkaan 6 5

Mikä on pullonkaula ja miksi se on tärkeä?! Pullonkaula! Mikä tahansa resurssi (ohjelmisto, laite tai verkon kaistanleveys), joka rajoittaa sovelluksen suoritusnopeutta! Lähinnä pullonakaulat alle vaaditun suorituskyvyn kiinnostavat! Ketju on niin vahva kun sen heikoin lenkki! Sovellus on niin nopea, kun sen pahin pullonkaula antaa sen olla! Suunnittelu : eri komponentit samaa kaliiberia! Hyvät uutiset! Pullonakaulojen poistaminen on lähes aina mahdollista! Yleensä on vaihtoehtoisia tapoja tehdä tämä! Huonot uutiset! Pullonkaulan poistaminen voi olla niin kallista ja hidasta! Yhdessä järjestelmässä on yleensä useita pullonkauloja! Show stopper 6

Mitä suorituskyvyn optimointi on?! Optimointi = parhaan mahdollisen ratkaisun etsiminen annetuilla tekijöillä ja reunaehdoilla! Säädetään itse sovelluksen, varusohjelmien ja käyttäjärjestelmän käyttäytymistä asetuksin ja parametrein! Parannetaan suorituskykyä indeksein! Järjestelmän optimointiin liittyvät kiinteästi muutokset ja herkkyysanalyysi! Vaihdetaan tai päivitetään varusohjelmisto! Lisätään muistia ja prosessori! Reititetään tietoliikenne eri tavalla! Muokataan sovelluksen logiikkaa ja komentoja! Muokataan arkkitehtuuria! Suorituskyvyn lisäksi täytyy miettiä riskejä ja kustannuksia! Regressio eli muutosten aiheuttamat ongelmat! Kasvupolku : Juuri ja juuri riittävä suorituskyky vs varaa tulevaisuuteen! Ennen rauta maksoi nykyään softa 7

Pullonkaulat ja suorituskyvyn optimointi v 1.0

Kolmitaso arkkitehtuuri Työasema Web-palvelin Sovelluspalvelin Tietokanta palvelin Esityskerros Liiketoimintakerros Data kerros 9

Yleisimmät pullonkaulat 45 40 35 30 25 20 15 10 5 0 23 Pullonkaulojen % osuus Websovelluksissa (Lähteet : Mercury Interactive ja Empirix) 40 27 30 Sovelluspalvelin Tietokantapalvelin Verkko Web-palvelin 25 20 20 10 10

Sovelluspalvelin! Oireet! Korkea prosessorin käyttöaste ja jono! Matala tapahtumamäärä ja kasvavat vasteajat! Yleensä syyllisiä! Tehoton arkkitehtuuri/toteutus : liikaa objektien luontia ja tuhoamista! Tehoton sovelluspalvelin ohjelmisto : skaalautuvuus huono! Useiden tietokantayhteyksien hallinta : parametrointi, versiot! Tehoton koodi : tehottomat algoritmit! Tehoton SQL : liikaa kyselyjä ja liikaa dataa 11

Tietokantapalvelin! Oireet! Korkea prosessorin käyttöaste ja jono! Paljon levyhakuja! Muistia vähän! Lukituksia paljon! Yleensä syyllisiä! Tehoton SQL! Huonot indeksit! Huono tietokantatuotteen parametrointi 12

Verkko! Oireet! Matala prosessorin käyttöaste ja samalla virheitä verkosta " 12xxx virheet " Dropped packets! Korkea verkon käyttöaste! Yleensä syyllisiä! Huono konfigurointi verkkolaitteissa (palomuuri, load balancer,switch jne)! ISP palvelujen ongelmat ja luvattua huonompi suorituskyky! Hidas verkkoyhteys (kotikäyttäjät modeemilla) 13

Pullonkaulan ikävät piirteet! Todellinen pullonkaula vääristää muiden resurssien kuormitusta! kun levyn suorituskyky on todellinen pullonkaula, näyttää prosessori olevan myös pullonkaula! kun poistetaan levy pullonkaula, prosessorin työmäärä vähenee, eikä se olekaan enään pullonkaula! vääristyminen voi tapahtua molempiin suuntiin! Pullonakaula siis luo toisia pullonkauloja, mutta toisaalta myös peittää toisia todellisia pullonkauloja! päälimmäiset pullonkaulat täytyy saada edestä pois mahdollisimman aikaisin, jotta päästään alla olevien kimppuun 14

Miten nähdään mikä on pullonkaula tekijä?! Miten pullonkaula tekijä ja sen aiheuttaja nähdään?! Keräämällä mittaustietoa testin ajalta eri mittareista. Näiden mittareiden arvoista voidaan nähdä mikä on pullonkaula tekijä.! Esimerkki : Web-sovellus ja tietokannan mittarit Sivu Vasteaika Haku.asp 11,00 Avauslomake.asp 18,50 Mittari Lkm Processor Time % 97 Processor Queue Length 5 % Privileged Time 72 Average Disk Queue 6 Memory Page faults/sec 1500 Memory available Mbytes 5 15

Miten nähdään mikä on pullonkaulan aiheuttaja?! Tulosten tulkinta! Ratkaisu! Muisti, levy ja prosessori ovat kaikki arvoiltaan huonoja ja näyttävät pullonkauloilta! Todellinen pullonkaula on kuitenkin muisti, joka aiheuttaa liian korkean levyaktiviteetin, joka taas kuormittaa prosessoria! Molemmat sivut näyttäisivät hitailta ja voivat olla pullonkaulan aiheuttajina! Tutkimalla profilointityökalulla suoritusta komentotasolla havaitaan, että pullonakaulan aiheuttaa Avauslomake.asp, joka hidastaa myös Haku.asp:ia! Optimoimalla Avauslomake.asp kaikki pullonkaulat poistuvat ja Haku.asp nopeutuu myös! Aina ei nähdä suoraan, mikä on pullonkaula ja sen aiheuttaja! täytyy ajaa sama testi uudestaan ja kerätä lisää tietoa! täytyy ajaa täydentäviä testejä, jolla haarukoidaan mahdollisista vaihtoehdoista se oikea! täytyy hankkia lisää asiantuntemusta paikalle 16

Pullonkaulojen havaitseminen kehityksen aikana! Tulevan pullonkaulan havaitseminen! yhden käyttäjän testeillä voidaan havaita suuri osa koodin ja SQL:n tehottomuudesta! tällöin mitataan suhteellista hitautta eli yhdellä käyttäjällä yksi sekunti voi olla todella huono tulos, jos normaali aika on 0,1 s! Apuna tässä ovat profilointi työkalut! antavat vasteaikojen lisäksi tietoa koneen resurssien käytöstä! mikäli suhteellinen resurssien käyttö esim levy I/O suuri, täytyy optimointia tehdä! Vasteajan lisäksi täytyy miettiä myös käytön frekvenssiä! käytetäänkö ko SQL lausetta tai funktiota 5 vai 500 kertaa tunnissa 17

Optimointi ennen usean käyttäjän testejä! Perusasiat kuntoon ensin! Tietokantahakujen optimointi! Varusohjelmien parametrointi! Levy i/o-operaatioiden hajautus! Pullonkauloja on yleensä useita! Perusasiat pitäisi laittaa kuntoon jo ennen suorituskykytestien aloitusta -> ovat muuten pullonkaula, joka peittää muut pullonkaulat! Joudutaan yleensä viilaamaan vielä, kun nähty suorituskykytestien tulokset 18

Kriittinen liiketoiminta kerros Esitys kerros Liiketoiminta kerros Data kerros Internet Web Server EJB App Server Enterprise JavaBeans The Newport Groupin mukaan EJB/liiketoiminta kerros aiheuttaa 50% transaktiojärjestelmien skaalautuvuus ongelmista TIetokannat 19

Komponenttien testaus! Tehdään suorituskykytestejä kutsumalla suoraan komponentteja ohi esitys kerroksen! Löydetään ja korjataan pullonkaulat kehityksen yhteydessä! Samat periaateet kuin järjestelmän suorituskykytestauksessa! Käyttöskenaariot, käyttäjämäärien arviointi, parametrointi, ramp-up jne 20

Pullonkaula suorituskyvyn polvessa Suorituskyky vs. käyttäjät 120,00 Vasteaika 100,00 80,00 60,00 40,00 20,00 0,00 20 40 60 80 100 120 140 160 180 Virtuaalikäyttäjät Pullonkaula 21

Järjestelmän suorituskykytestaus! Vaatii työkalun suurien käyttäjämäärien simulointiin! etsitään ja korjataan yksittäisten käyttöskenaarioiden pullonkaulat! etsitään ja korjataan todellisen yhteiskäytön pullonkaulat! Vaatii useiden osapuolien yhteistyötä! yksi osaa työkalun, toinen analysoida ja kolmas optimoida! Mittaritietojen keskitetty kerääminen auttaa analyysiä! jatkuva aikasarja! eri mittareiden vertailu rinnakkain! Kaikkia tarvittavia mittareita ei saada kuitenkaan kerättyä työkaluun! käytetään yhdessä täydentävien tuotteiden kanssa! verkkomonitorit! profilointityökalut 22

Yleisimmät pullonkaulat sovellus vs ympäristö 80 60 40 20 0 Pullonkaulat % osuus websovelluksissa (Lähde : Mercury Interactive) 60 Sovellus 40 Ympäristö! Sovellus! Web-palvelin! Sovelluspalvelin! Tietokantapalvelin! Ympäristö! Verkko! Rauta! Turvallisuus 23

Sovelluksen suorituskyvyn optimointi! Sovellus on yleisin pullonkaula (60%)! Syitä! sovelluksessa on suorituskyvyn kannalta huonoja kohtia, joita optimoimalla saadaan poistettua pullonkaula! helpoin tapa ja se tapa joka osataan hyvin ei ole suorituskykyisin! kaikkiin kohtiin ei tarvita suorituskykyisintä koodausta! Hyvät uutiset! komentoja ja logiikkaa muuttamalla saadaan merkittävää parannusta suorituskykyyn! Huonot uutiset! tähän tarvittava työmäärä on vaihtelee voimakkasti ja voi olla suuri! suuret muutokset voivat aiheuttaa regressiota eli joudutaan testaamaan paljon uudestaan 24

Esimerkki 1 : Paljon tietoja lomakkeella Annetaan hakuehto : Tuo kaikki Suomen asukkaat ja heidän osoitteensa taulukkona.! Ratkaisu 1 : Asetetaan maksimimäärä haettavalle datamäärälle. Hakua ei voida suorittaa. Maksimi rivimäärä 1000. Annetaan hakuehto : Tuo kaikki Suomen kaupungit ja niiden väkiluku.! Rakaisu 2 : Streaming haetaan sivu kerrallaan, joka näytetään heti käyttäjälle. Lisää tietoa haetaan taustalla. 25

Esimerkki 2 : Useita tietoja eri lähteistä Porttaalin avauslomakeelle haetaan kymmeneen freimiin tietoja eri taustajärjestelmistä! Ratkaisu 1 : Haetaan tietoja etukäteen summatauluihin! Ratkaisu 2 : Tiedot lähelle käyttäjää välimuistiin! Ratkaisu 3 : Tehdään staattisia sivustoja! Ratkaisu 4 : Sovelluksen logiikan viilaus komentoja yhdistelemällä 26

Varusohjelmat ja laitteisto! Varusohjelmat ja laitteisto! Varusohjelmien päivitys/vaihto/lisäys! Laitteiston päivitys/vaihto/lisäys! Usein osa ratkaisua! Vaikutus ja riskit vaihtelee! Uusissa versioissa on uudet virheet tai eivät ainakaan toimi aina samalla tavalla vanhan kanssa! Osaako sovellus hyödyntää uuden prosessorin? 27

Case esimerkkejä v 1.0

Verkko + sovelluslogiikka pullonkaulana Case 1 : Amerikkalainen internet-porttaali! Sovellus : Useiden taustajärjestelmien tiedon haku yhdelle näytölle! Vasteaika testeissä USA:ssa hyväksyttävä 5 s, kun yhteydet nopeat! Yhteyden muodostus Aasiassa palvelimen ja työaseman välille, kestää joka kerta kaksi sekuntia ja elementtien siirto on myös hidasta! Sovelluksen logiikka rakennettu sisäkkäisillä kehyksillä, joita on 12 kpl peräkkäin! Tuloksena aloituslomakkeen haku kestää 2 s*12 + 30 s = 54 s 29

Toimenpiteet! Idea 1 : Verkkoyhteyden nopeutus! ei ole internetissä mahdollista -> asiakkaita tuhansia, jotka tarvisivat nopeamman yhteyden! Idea 2 : Sisällön siirto lähemmäs asiakasta! kuvien tallennus käyttäjän työasemaan kokonaan ei ole mahdollista -> tietoturvamääräykset estävät! osa siirretään työasemaan, osa palvelimille lähellä käyttäjää (Content Delivery Network) -> auttoi osittain! Idea 3 : Sisällön pakkaus tietoliikenteessä! auttoi osittain! Idea 4 : Sovelluslogiikan muutos, kehysten purku! sisäkkäisten kehysten purkaminen -> suuritöinen vaihtoehto, joka oli pakko käyttää -> päästiin tavoitteseen 30

Virheet / mitä tästä opittiin?! Internetissä hitaiden yhteyksien takaa käyttäjät! ovat usein tärkeä käyttäjäryhmä! Tekninen suunnittelu! ei osattu huomioida vaatimusta suorituskyvystä kaikkien tärkeiden käyttäjäryhmien osalta! Suorituskykytestaus kehityksen loppuvaiheessa! tehtiin liian myöhään! testit eivät simuloineet todellista käyttöä! Pilottikäyttäjät pelastivat! ei ehditty laajaan tuotantoon, ennen kuin ongelmat huomattiin! Ratkaisu suorituskykyongelmiin on yleensä olemassa! korjaaminen vie usein paljon aikaa (viikkoja-kuukausia) ja vie paljon rahaa 31

Tietokanta ja varusohjelmisto pullonkaulana Case 2 : Operatiivinen web-sovellus! Sovellus : Tehdään runsaasti erilaisia hakuja ja päivityksiä pääasiassa samoihin isoihin tauluihin! Testitietokannan koko kehitysympäristössä 20 000 riviä, tuotannossa 500 000! Kaikille hauille on tehty indeksit; mikään yksittäinen haku ei kestä yli kahta sekuntia yhdellä käyttäjällä! Arkkitehtuurin suorituskykytesti ilmaistyökalulla antaa hyviä tuloksia! Järjestelmän suorituskykytestit antavat heikkoja tuloksia heti kun yhtäaikainen käyttäjämäärää menee yli 20! Uusi verkkomonitorointi työkalu, josta paljon dataa mutta vähän tietoa 32

Toimenpiteet! Idea 1 : Varusohjelman version päivitys palvelimelle! paransi suorituskykyä selkeästi, mutta ei vielä riittävästi! aiheutti joitakin muutoksia sovelluksessa käytettäviin komentoihin! Idea 2 : Vaihdetaan web-palvelin tai tietokanta-palvelin tehokkaampaan koneeseen! olisi auttanut jossain määrin, muttaa olisi ollut kallis ratkaisu! Idea 3 : Sovelluslogiikan muokkaaminen kutsuja vähentämällä! paransi suorituskykyä, eikä aiheuttanut kovin paljoa lisätyötä! toteutettiin siirtämällä toimintaa kriittisiltä osin proseduureihin tietokantaan! Idea 4 : Tietokannan indeksien ja parametrien viritys! auttoi lopulta saavuttamaan vaatimusten mukaisen vasteajan 33

Virheet / mitä tästä opittiin?! Pullonkauloja oli useita! kun yksi huomattiin ja korjattiin seuraava tuli esiin! Suorituskykytestaus kehityksen lopussa! tehtiin liian myöhään; alkuperäisellä arkkitehtuurilla suorituskykyä ei olisi saatu kuntoon! onneksi uusi versio varusohjelmasta (tietokanta-ajuri) poisti ongelman! Jos haku kestää kaksi sekuntia, se ei ole välttämättä hyvä tulos! indeksin käyttäminen ei vielä takaa SQL-lauseen suorituskykyä! haku saattaa tehdä levy i/o-operaatioita silti paljon, jolloin levystä tulee nopeasti pullonkaula, kun käyttäjämäärä kasvaa 34

Yhteenveto! Suorituskyky täytyy huomioida sunnittelussa ja testata jatkuvasti! hyvä arkkitehtuurin suorituskyky ei takaa järjestelmän suorituskykyä! hyvä komponenttien suorituskyky ei takaa järjestelmän suorituskykyä! Optimoinnissa käytettyjen muutosten ja päivitysten riskiä voi olla vaikea arvioida! alkuvaiheessa projektia on aikaa reagoida yllättäviinkin ongelmiin! Työkaluissa on eroja! hyvä työkalu säästää paljon aikaa ja rahaa! liian hyvät tulokset yleisiä ja vaarallisia 35