Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP optimointi ja suoritusajat

ZupaDupa [27.03.2011 15:29:18]

#

Olen tekemässä web-pohjaista tietokantasovellusta (PHP&MySQL). Sovellusta olisi tarkoitus myydä yrityksille. Tietokanta on toteutettu niin, että usean yrityksen tiedot voidaan säilöä samassa tietokannassa, joten sovellukselle riittää yksi palvelin. Sovellusta voi käyttää yrityksen henkilökunnan lisäksi asiakkaat (rajatuilla oikeuksilla).

En vielä tiedä todellisia käyttäjämääriä ja sovelluksen kuormitusta, mutta oman liiketoimintani kannalta on tietenkin sen parempi mitä enemmän asiakkaita.

Olen lueskellut paljon oppaita PHP-koodin optimoinnista ym. ja joissain tapauksissa olen saanutkin lyhennettyä suoritusaikaa merkittävästi. Käytännössä kaikki sovelluksen sivut sisältävät tietokantahakuja ja osa merkittävän määrän hakujen tuloksiin pohjautuvaa laskentaa PHP:llä. Sivujen latausajat vaihtelevat tällä hetkellä 0.1 - 0.3 sekunnin välillä. Mutta kuten kaikissa lukemissani oppaissakin sanotaan, nostattaa yksikin tietokantahaku suoritusaikaa merkittävästi. Mikäli sivu ei sisällä tietokantahakua, sen generoiminen vie 0.00...05 sekuntia, mutta jos lisään yhdenkin tietokantahaun, vie sivun generointi 0.1 sekuntia riippumatta siitä, näytetäänkö tietokantahaun tulosta vai ei (käsittelen tietokantaa Propel ORM:n avulla).

Nyt minua kuitenkin mietityttää kuinka voin arvioida resurssien tarvetta. Jos kaikkien sivujen keskimääräinen latausaika on 0.2 sekuntia, niin voinko tulkita siitä suoraan että palvelimelle voi kohdistua korkeintaan 5 sivunlatauspyyntöä sekunnissa? Voisin kuvitella että käytännössä palvelin sietäisi useammankin pyynnön sekunnissa kun suoritukset ajetaan rinnakkain, olettaen että yhden pyynnön käsittely ei vie 100% CPU ajasta. Pitääkö paikkaansa?

esajeejee [27.03.2011 16:07:34]

#

En tiiä mutta 0.1s tietokantahaku kuulostaa todella hitaalta, oliskohan siinä eniten varaa optimoida ?

The Alchemist [27.03.2011 16:31:21]

#

Kuulostaa tosiaan siltä, että tietokannassa on eniten optimoitavaa. Kannattaa opetella käyttämään indexejä. Lisäksi kaikkea ei kannata aina laskea reaaliajassa. Jos esim. tarvitset usein jonkin monen sadan tuhannen alkion joukon kokonaismäärää, niin tylysti tallenna se kantaan ja vaikka triggereiden avulla päivitä lukua muutosten yhteydessä.

Olen itse joskus vääntänyt omaa foorumisoftaani ja testimielessä generoinut sinne viestejä satoja tuhansia per alue. Noilla kahdella mainitsemallani kikalla monta sekuntia vievät kyselyt saa puristettua sekunnin tuhannesosiin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta