karhatsu / hirviurheilu

Hirviurheilu - tulospalvelu Metsästäjäliiton urheilulajeille
http://www.hirviurheilu.com
4 stars 1 forks source link

Tulossivun lisäoptimointi #85

Closed karhatsu closed 13 years ago

karhatsu commented 13 years ago

SM-kisojen suurimman sarjan tulossivun näyttäminen tuotannossa kestää 5-10 sekuntia. Vaatii merkittävää lisäoptimointia.

karhatsu commented 13 years ago

Yleisesti ottaen voi nyt todeta, että tuotannon hitaudet kisan aikana johtuivat juuri isojen sarjojen tulossivujen näyttämisestä. Ja oleellista tässä on se, että kyse ei ollut pullonkaulasta tietokannassa vaan yksinkertaisesti erittäin hitaasta series.ordered_competitors-metodista. Siis vaikka käyttäjiä olisi vain yksi kerrallaan, niin isoille sarjoille tuon metodin ajaminen kestää tuotannossa tällä hetkellä yli 5 sekuntia. Toki tämä sitten välillisesti aiheuttaa pullonkaulan jonnekin, vaikkapa tietokantaan.

Olen tutkinut ongelmaa jonkin verran tarkemmin ja päätynyt, että kriittinen metodi on competitor.series_best_time_in_seconds. Tämä metodi katsoo joko ikäryhmän tai koko sarjan parhaan ajan. Optimointi täytyy siis keskittää sen tehostamiseen.

karhatsu commented 13 years ago

Sain optimoitua Series.best_time_in_seconds-metodia niin, että nyt tuotannossa isoimmat sivut lataantuvat 1,5 sekunnissa. Kehityspuolella parannus oli 4 testin keskiarvossa 13 -> 5,3 sekuntia.

Ainoa ongelma on tällä hetkellä se, että yksikkötestit eivät mene läpi, koska en saanut sqlite3-toteutusta toimimaan vielä. Nyt tuli nimittäin ensimmäistä kertaa vastaan tilanne, jossa joutuu tekemään db-kohtaisia kyselyitä. Repossa ja tuotannossa on siis poikkeuksellisesti koodia, jonka testit eivät mene läpi, mutta yritän korjata ongelman mahdollisimman pian.

karhatsu commented 13 years ago

Testitkin toimivat. Suljen tämän, vaikka toki sivu voisi olla vieläkin hieman nopeampi. Seuraavat tehostustoimenpiteet voivat kuitenkin olla paljon vaikeampia.