Jak dimenzovat HW pro webserver?

noob

Jak dimenzovat HW pro webserver?
« kdy: 24. 06. 2010, 16:35:10 »
Máte někdo představu jaký HW je potřeba pro webserver zobrazující kolem milionu stránek denně? Apache/php/mysql, poměrně rozsáhlé tabulky. Chtěl jsem to původně odvodit ze současného stavu, ale teď  běží na serveru ještě postfix, který generuje podstatné množství zátěže.


David Strejc

Re: Jak dimenzovat HW pro webserver?
« Odpověď #1 kdy: 24. 06. 2010, 16:54:43 »
Milion PV za den jsme delali na nejpes.blesk.cz na 16cti procesorovem stroji (2xHperThreading Xenon Quad Core) pricemz zatez byla rozlozena do 16cti hodin s nejvetsi spickou.
Jede to na Joomle, ktera neni sice tak rychla jako Drupal, ale neni uplne nejpomalejsi.
Hodne zrala databaze (cca 700% vykonu a zbytek 1100% jeli php scripty) - nebylo to uplne pomale, ale kdyz to dali do televize, tak to proste a jednoduse spadlo. Neodladeny databazovy select a tak dale.
Databaze je docela uzke hrdlo dle meho skromneho nazoru, protoze php musi neustale cekat a kdyz dotaz trval 5 sekund tak se cela ta fronta ucpala a umrela.
Dali jsme tam SSD disky od Intelu a rozumny milion PV za den to udela si myslim docela v pohode.
Chce to si pustit mozna pri tvorbe stroje Apache Benche a tak dale. Ja jsem tam dal jeste eaccelerator - vazne to pomaha o 20%.
Poustet to samozrejme pres fcgid a apache worker.
Urcite bych si pustil php -f index.php na vasi aplikaci s cache a bez cache a tak dale. Da se to docela dobre spocitat.
Ja mam spocitane, ze Joomla se vygeneruje na 2.4GHz za 0.1 vteriny na jednom jadre s cache a eacceleratorem. Cili jsem si tak zhruba naodhadaoval synteticke prostredi a pak 40 requestu na 4 jadro.
Nakonec jsem dosel k tomu, ze udelam 100 realnych requestu za sekundu na te konfiguraci, kterou jsem posilal.
RAMky jsme tam dali 16GB, ale neni to uplne potreba nejakych 8GB by asi stacilo.
Myslim si, ze nejde o to, kolik server dela za den jako o to kolik dela v peaku. To je uzke hrdlo.
Snad to pomuze.

noob

Re: Jak dimenzovat HW pro webserver?
« Odpověď #2 kdy: 24. 06. 2010, 17:28:53 »
Diky za vycerpavajici odpoved. Ted uz jenom spravne odhadnout navstevnost ve spicce a neinzerovat v TV :)

David Strejc

Re: Jak dimenzovat HW pro webserver?
« Odpověď #3 kdy: 24. 06. 2010, 17:39:48 »
Hledal jsem to po celem netu. Vsude jsem prosnupaval prameny a nikde jsem proste nedokazal najit, jak se dimenzuje HW pro Joomlu, kdyz to ma mit HODNE PV za den.

Tak jsem si problem rozebral asi takhle:

Kde to pravdepodobne umre - na CPU nebo na RAMce?
Pustil jsem si na "smukohardwaru" (nejake dvoujadro) ab -c 10 -t 10 ... zjistil jsem ze je bug v php a freebsd + php open_basedir.
Zjistil jsem pak, ze eaccelerator jak rikaji vazne pomaha, protoze:

time php -f index.php

Pak jsem "predpokladal" ze jak tvrdi se pri fcgid otevre "kanal" mezi apache a fcgid procesem, ktery execuje phpka v podstate stejne jako shell (domenka).

Cili to jde spocitat.

Jsou pak problemy spis s databazi - pokud tam jsou nejake delsi operace.
Na to opet existuje tuning-primer.sh, ktery neco o databazi rekne.
A pak zapnuti logovani mysql (staci par tisic dotazu - nechat to treba 10 minut ve spicce pustene) a to zkusit zprofilovat timhle:
http://myprofi.sourceforge.net/

Jsou i profilery php skriptu.
A nastaveni databaze tu super popsal nekdo v clanku par dnu zpatky.

Spicka nastava cca v 9:30 a konci v 16:00 a pak je dalsi v 20:00 - 21:00.

Takhle nejak to urcite pujde odhadnout.

noob

Re: Jak dimenzovat HW pro webserver?
« Odpověď #4 kdy: 25. 06. 2010, 15:33:40 »
Takhle v kostce a polopate podano to vypada dost jednoduse, ale google mi moc nepomohl (ted uz vim na co se ho ptat).

Taky vidim nejvetsi problem v databazi, to se projevuje uz ted. Dlouhodoby prumer 200 sql dotazu za sekundu vypada v pohode, ale tuning-primer.sh tvrdi, ze ve spicce uz si databaze hrabla na dno. Ten MyProfi analyzer se tvari, ze by mohl dat odpoved na to, co se tam vlastne v nejvetsi spicce deje a kolik provozu ma na svedomi postfix.

S Php scripty to bude horsi, odmitaji v bashi fungovat, ale zkusim to zapracovat primo do scriptu.

Jinak spicku nastesti nebude potreba odhadovat, od toho mame google analytics a ze soucasneho provozu to nejak musi vyjit :)


onanym

Re: Jak dimenzovat HW pro webserver?
« Odpověď #5 kdy: 26. 06. 2010, 12:43:10 »
Jestli Vam pomohl eaccelerator pouze o 20% tak delate rozhodne neco spatne. Pri vicemene hotovem systemu muzete acceleratorem vse "nacachovat" do ramky a vypnout i checkovani zmeny skriptu.

Druha vec je, ze rozhodne doporucuji koupit radeji dva servery a oddelit db a web nez jeden hovadskej. Pripadne dalsi na servirovani obrazku a souboru s lightweight webserverem (nginx, lighttpd). Dost se take necha vychytat s ramdiskem nebo pokud nejde o vylozene dynamicky obsah cachovat co jde do statickeho html...

David Strejc

Re: Jak dimenzovat HW pro webserver?
« Odpověď #6 kdy: 26. 06. 2010, 13:27:02 »
Jeden 1U jsme takhle predimenzovali proto, ze 1U stoji v housingu cca 800 (mame docela v pohode podminky)

Kdyz bychom meli 3U tak platime o 1600 mesicne vic prakticky za nic.
Dalsi vec je, ze je 3nasobna pravdepodobnost, ze selze hardware na jednom z nich a cely system se zhrouti.
Delat z tech 3 pak cluste, aby se nezhroutil pri vypadnuti jednoho nodu, je docel narocne.

Takze jsme to zvolili takhle.

A funguje to.

Mickey

Re: Jak dimenzovat HW pro webserver?
« Odpověď #7 kdy: 26. 06. 2010, 19:12:43 »
Z vlastni zkusenosti taky doporucuju rozdelit http a db server. Mam vyzkouseno, ze 2 servery s radove nizsim vykonem maji rychlejsi odezvu, nez 1 "nadupany". Navic se takove reseni lip ladi - kdyz mate problem, vite hned kde, jestli v databazi, nebo webu, muzete rychleji reagovat.

Re: Jak dimenzovat HW pro webserver?
« Odpověď #8 kdy: 26. 06. 2010, 22:17:13 »
...A funguje to.

Jistě proč ne, pokud chcete primárně šetřit peníze. Pokud se klade důraz na výkon, dva servery toho zvládnou vždy více než "adekvátní" jednoserver.

David Strejc

Re: Jak dimenzovat HW pro webserver?
« Odpověď #9 kdy: 28. 06. 2010, 09:15:51 »
Ono totiz 800 (nekde 1000) za 1Ucko x 12 je celkem dost penez. Kdyz to zakaznik plati, tak problem neni.

Navic v tomhle nasem pripade to bylo taky o tom, ze je to sezoni zalezitost.

Rozdelit DB a HTTP server je nejjednodussi a efektvini - ale jak jsem psal pro nas to bylo 12x 1000 + administrace o jeden stroj navic + naklady na druhy server (prvni by byl o neco levnejsi, ale case + deska + zbytek je porad o dost drazsi nez to nacpat do jednoho).