Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: AWS ja php kuormitus

Sivun loppuun

juhauta [05.03.2014 18:30:48]

#

Työn alla olisi php+js+mysql tehty mobiiliohjelma ja testikäytössä se jo pyöriikin amazonin ec2:ssa.

Nykyisin taitaa olla muotia node.js:t sun muut mutta kysymys kuuluu että miten "perus" php+js+mysql - appiksen pystyy tekemään skaalautuvaksi niin että sitä voi pyörittää useassa palvelimessa /=instanssissa yhtä aikaa jos käyttäjämäärä kasvaakin rajusti ?

The Alchemist [05.03.2014 19:15:30]

#

Ei mitenkään. Siksi php:tä ei käytetäkään sellaisissa sovelluksissa. Sovelluksia voi optimoida hirveän monella eri tavalla käyttämällä välimuisteja kymmenessä eri kerroksessa. Ei se softa siitä silti mihinkään "skaalaudu". Tosin nyt on tämä Facebookin julkaisema hiphop-virtuaalikone eli hhvm ilmeisesti siinä vaiheessa, että sitä voi alkaa testailla omien järjestelmiensä kanssa. Sen pitäisi parantaa php:n suorituskykyä moninkertaisesti. Se siis korvaa kokonaan vakion php-tulkin.

Metabolix [05.03.2014 19:26:54]

#

Sopiva ratkaisu riippuu sovelluksen luonteesta ja siitä, mitä ”useassa palvelimessa” käytännössä sinulle tarkoittaa.

The Alchemist [05.03.2014 19:53:36]

#

Ja siis kyllähän php-sovelluksia voi ajaa useassa rinnakkaisessa instanssissa ja niin varmasti kaikki palvelimet tekevät oletuksenakin. Se ei kuitenkaan itsessään anna kummoisia lupauksia sovelluksen skaalautumisesta.

Tukki [05.03.2014 19:56:39]

#

The Alchemist kirjoitti:

Ei mitenkään. Siksi php:tä ei käytetäkään sellaisissa sovelluksissa.

Ihan mielenkiinnosta, mikälaisia ratkaisuja olisi tähän tarjolla jos kieli-/alustavalinta olisi jokin toinen?

Itselläni tulee tähän kysymykseen ratkaisuksi mieleen lähinnä erilaiset load balancing-menetelmät (http://en.wikipedia.org/wiki/Load_balancing_(computing)) jotka ovat enimmäkseen kieliriippumattomia sekä etujensa että haittojensa puolesta. Heti jo toinen osumaa googlehaulla kertoo että Amazonilla on ihan suoraankin tarjolla jotain tämän tyyppistä palvelua http://aws.amazon.com/elasticloadbalancing/.

Ennen hajautettujen ratkaisuiden käyttöä kävisin kyllä läpi huolella kaikki perinteisemmät menetelmät kuten koodin ja palvelinohjelmien optimoinnin, tietokannan eriyttämisen toiselle palvelimelle ja jo mainitut välimuistit yms. Ja sitten vielä lisää rautaa siihen yhteen pönttöön ennekuin alkaa useampia hankkimaan.

timoh [05.03.2014 21:16:53]

#

Huolehdi että ohjelmasi on stateless. Sessiot lyöt kantaan (tai keksiin jos mahdollista) jne.

nginx + PHP-FPM kombo on varmaankin se mistä kannattaa lähteä liikkeelle.

Tietokannan skaalaus on sitten oma operaationsa tuohon päälle, mutta stateless toiminta on koko homman lähtökohta. Se on se asian ydin miten PHP tai mikä tahansa muu webbiohjelma skaalautuu.

Triton [05.03.2014 22:27:11]

#

Itseäni kyllä sinänsä kiinnostaa jo se, että minkä ihmeen takia Facebook on halunnut pistää paukkuja johonkin PHP:n kiihdyttämiseen, kun esim. javalla sais tehtyä paljon nopeampaa serverisoftaa ihan suoraan ilman sen kummempia kikkailuja.

The Alchemist [05.03.2014 22:32:21]

#

Kuulemma php-koodareita – myös koodaustaitoisia – löytää työmarkkinoilta helpommin.

Triton [05.03.2014 22:40:06]

#

Voi toki olla, mutta siinä onkin työ etsiä niitä hyviä koodareita kaikkien onnettomien räpeltäjien joukosta.

Grez [06.03.2014 04:27:54]

#

Triton kirjoitti:

Voi toki olla, mutta siinä onkin työ etsiä niitä hyviä koodareita kaikkien onnettomien räpeltäjien joukosta.

No eiköhän Facebookilla ole varaa palkata vaikka useampikin tyyppi etsimään ja testaamaan.

timoh [06.03.2014 13:49:26]

#

The Alchemist kirjoitti:

Ei mitenkään. Siksi php:tä ei käytetäkään sellaisissa sovelluksissa. Sovelluksia voi optimoida hirveän monella eri tavalla käyttämällä välimuisteja kymmenessä eri kerroksessa. Ei se softa siitä silti mihinkään "skaalaudu".

Ettei juhauta saa väärää kuvaa, niin tämän The Alchemistin kommentin korjaan.

PHP-sovelluksia voi skaalata (horisontaalisesti) vaikka kuinka ja paljon, ja tämä on juuri ohjelmakoodista ja arkkitehtuurista kiinni.

Kakutus jne. toki ovat nekin avainasemassa, mutta nimenomaan se on se PHP-koodi joka suunnitellaan skaalautumaan. Mm. asiat mitä aiemmin mainitsin, ja esmes tietokantaoperaatiot ovat avainkohtia (kuinka luet/kirjoitat kantaklusteriin - ja vaikka kantaklusteria ei vielä olisikaan, ohjelma on hyvä suunnitella niin että tietokantainstansseja tulevaisuudessa saatetaan ottaa käyttöön enemmän kuin yksi).

Skaalaaminen horisontaalisesti on kuitenkin ainoa mahdollinen vaihtoehto (sen tietyn pisteen jälkeen kun et enää ainakaan järkevästi voi rautaa pumpata).

juhauta [06.03.2014 23:56:39]

#

tätä siis tarkoitin! en osannut oikeaa termiä käyttää.
eli load balancing. vaikea ymmärtää että miten voisi yhdestä urlista tulla ja mennä dataa esim 3 eri serverille ilman ristiriitoja ja jopa niin että hyötyä vielä jää.
haluaisinkin ottaa tämän huomioon jo nyt, tietokanta- ym. toimintoja koodatessa ettei mene koko pas.. uusiksi myöhemmin

juhauta [07.03.2014 08:03:31]

#

Katsoin youtubesta nginx + PHP-FPM videon ja tuo oli selvästi se mitä hain.
Nyt pitäisi vain opiskella että miten sitä php-appista pitää muuttaa.

Esim. jos on cookiessa tallennettu käyttäjän kirjautumistieto niin tarvitseehan sekin session-tiedoston serveripäässä toimiakseen (ainakin apachessa)

Triton [07.03.2014 08:45:59]

#

Sä voit tehdä myös oman istuntojärjestelmän ja viedä istuntotiedot kantaan.


Sivun alkuun

Vastaus

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

Tietoa sivustosta