Topic: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

Norėčiau gauti patyrusių žmonių nuomonę apie title paminėtas technologijas: kokių pranašumų suteikia, kokių problemų sukelia, suderinamumas su kitom technologijom ir t.t.
Iš esmės klausimai būtų sekantys.
kuom pranašesni lighthttpd bei nginx serveriai už tarkime rinkoje populiarų apache ir ar neturi jie kokių trūkumų (tarkim iš programavimo pusės su php)? kaip su nustatymais (alternatyva .htaccess)?
xcache ir memcache. kokios realios naudos jie suteikia? vėlgi, kaip tai įtakoja kodo rašymą?
Sphinx Search. apie šį daiktą beveik išvis nieko nežinau, tik suprantu, kad jis skirtas atlikti full-text paieškai duomenų bazėje. ar tai reikalauja kodo pataisymų? ar duoda realią naudą lyginant su standartinėm MySQL galimybėm.

Su sąlyga, kad šūdo nebus...

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

Ramex wrote:

kuom pranašesni lighthttpd bei nginx serveriai už tarkime rinkoje populiarų apache ir ar neturi jie kokių trūkumų (tarkim iš programavimo pusės su php)? kaip su nustatymais (alternatyva .htaccess)?

šie paminėti web serveriai yra orientuoti į greitį sumažinto funkcionalumo dėka. Jeigu tavo poreikiai tokie, kad tau užtenka paleisti PHP modulį ar paduoti failą per web serverį, tai gali juos naudoti. Bet jeigu pas tave yra eilė kitų apache modulių, kurie kažką naudingo atlieka, tai gali būti taip, kad su minėtais web serveriai gali nepavykti atlikti tokių pat veiksmų. Kalbant bendrai tai tikriausiai daugumą PHP saitų puikiai veiks ir nereikės beveik nieko keisti.

Ramex wrote:

xcache ir memcache. kokios realios naudos jie suteikia? vėlgi, kaip tai įtakoja kodo rašymą?

šie du produktai turi truputį skirtingas funkcijas.

Memcache leidžia labai greitai padėti ir paimti duomenis iš tam tikros RAM'e saugomos duomenų "bazės". Tinka, kai nereikia reliacinių ryšių/trazakcijų. Gali saugoti objektus ar turinį, kurio generavimas tarp sesijų valgo papildomus rerusus, o laikymas tokiame podėlyje (cache). Turimo kodo pataisymai reikalingi, nes duomenys dedami ir imami per atitinkamus API.

Xcache - yra PHP opkodo (opcode) cacher'is/optimizatorius - tikslas greičiau vykdyti PHP aplikacijas. čia jokių PHP kodo taisumų nerikia.

Ramex wrote:

Sphinx Search. apie šį daiktą beveik išvis nieko nežinau, tik suprantu, kad jis skirtas atlikti full-text paieškai duomenų bazėje. ar tai reikalauja kodo pataisymų? ar duoda realią naudą lyginant su standartinėm MySQL galimybėm.

Reikalauja kodo pataisymų.

Alternatyvos:
Lucene - http://lucene.apache.org/java/docs/
Solr - http://lucene.apache.org/solr/

Nauda tai yra tokia, kad gali ganėtinai greičiau suindeksuoti ir atlikti paiešką tarp teksto. Taip pat egzistuoja eilė papildomų funkcionalumų, kurių nėrą MySQL'e. šiaip internete yra nemažai tam tikrų paieškos funkcijų palyginimų tarp šių ir kitų produktų.

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

na esmė yra ta, kad tų servisų prireiks dedikuotam serveryje su jau veikiančia svetaine. kokius ji modulius naudoja konkrečiai, kol kas nežinau. bet php naudojamiems moduliams pasirinktas http serveris įtakos neturi?

Xcache, kaip suprantu, galima naudot tiek su lighttpd, tiek su apache? o kaip dėl nginx? ar net nėra tikslo su juom naudot?

Su sąlyga, kad šūdo nebus...

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

Dėl konkrečių reikalavimų konkrečiam softui tai reikia skaityti jų dokumentaciją.

O mastant bendrai tai kiekvieno iš paminėtų modulių naudojimas turi būti tikslingas, t.y. - naudoti tada, kai reikia, o ne šiaip, kad išgirdau ir davai instaliuoju. Jeigu puslapis/programa kažkur stringa, nepaveža hardware tada reikia žiūrėti kame problemos ir kaip jas spręsti. Ir nesvarbu ar serveris yra dedikuotas ar ne.

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

tai aš viską kuo puikiausiai suprantu, tačiau konkrečiai šitie pasiūlymai buvo pateikti iš kliento pusės. tad pirmas mano uždavinys ir yra susirinkti kuo daugiau info apie minėtus servisus, o kai jau turėsiu priėjimą prie jų naudojamo kodo - tada spręsiu, ką tikslinga naudoti, o kur gal tiesiog blogai suprogramuota ar suprojektuota.

Su sąlyga, kad šūdo nebus...

6 (edited by zygis 2010-03-08 12:38:21)

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

Na su webserveriais, tarkime su Nginx jei pats administruosi, būk pasiruošęs bet kam, dabar va sėdžiu ir laužau galvą, kodėl vyksta vienoki ar kitokie dalykai, loguose nieko nesimato, apkrovimas normalus, tiesiog jokio atsako kai kuriems susijungimams. Net nėra minčių kaip tinkamai paklausti googlės...
Buvo kilusi bėda su nginx ir vakar, tik ten jau iš logų kai kas matėsi, o google patarimai perkompilinti nginx'ą bet perl , tačiau pabandžiu keletą versijų nepavyksta praeiti make komandos :( Tai vėlgi reikia galvoti kaip išsisukti... Aišku daug pasako versijos numeris (0.7) ... Taigi jei tikrai reikia ir gali/nori skirti laiko - čiupk nginx, jei laiko nenori/negali skirti tada jo geriau neimk. Aišku išlieka tikimybė, kad tik man vienam taip "pasisekė", tarkime OS distribucija nelabai palaikoma ar dar koks briedas...

Reik tikėtis atsipirks vargai :)

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

7 (edited by Ramex 2010-03-08 12:35:38)

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

ir dar vienas dalykas.
memcache skirtas patalpinti į atmintį kažkokią informaciją, kuri dažnai naudojama, o jos generavimui sunaudojama daug resursų. ir iš memcache dokumentacijos supratau, kad tai daroma iš tarkime php script'ų. tad jei man reikalinga informacija guli duomenų bazėje, tai aš pirma ją traukiu iš DB, tuomet saugau atmintyje naudodamas memcache ir kitą kartą tiesiogiai traukiu iš atminties.
o mane domintų kiek kitoks scenarijus: tarkime turime kažkokią masyvią lentelę, kurios ištraukimas ilgai trunka. ar eitų tą lentelę saugoti atmintyje nenaudojant memcache, o naudojant MySQL priemones?

Su sąlyga, kad šūdo nebus...

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

tai gali nurodyti kiek užims koks query_cache ... arba pasikrauni koki my-large.cnf jau paruoštą konfigą ir viskas, ten plius minus paoptimizuota , kad mysqlas pasidėtų kai ką į ramus. Su tokiu konfigu bent pas mane apie 50% užklausų būna pasiimama iš cache'o...

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

MySQL'e tam yra VIEW'ai arba MEMORY/HEAP duomenų saugojimo variklį.

Bet pirmiausia tai aišku yra analizė - kodėl tiek ilgai užtrunka duomenų paėmimas iš DB, nes tai tik rodo, kad yra jau kažkas blogai su duomenų struktrom / užklausom.

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

na čia dar klausimas ar apskritai ten yra kažkas blogai, nes kiek aš varčiau puslapį iš išorės, tai jis man veikia tikrai greitai. tad čia gali būti tiesgio jų noras, kad veiktų dar greičiau.
na ačiū už komentarus, kolkas man viskas aišku. reikia laukt, kol pamatysiu sistemą iš vidaus, jei apskritai pamatysiu =]

Su sąlyga, kad šūdo nebus...

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

Nors ir ne PHP, bet esmė ta pati: http://railslab.newrelic.com/scaling-rails RubyOnRails serija screencastų apie scalinimą. Tikrai neblogai paruoštas. O  Episode #8 - Memcached kaip matau visai į temą tavo atveju :)


Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

minde wrote:

šie paminėti web serveriai yra orientuoti į greitį sumažinto funkcionalumo dėka. Jeigu tavo poreikiai tokie, kad tau užtenka paleisti PHP modulį ar paduoti failą per web serverį, tai gali juos naudoti. Bet jeigu pas tave yra eilė kitų apache modulių, kurie kažką naudingo atlieka, tai gali būti taip, kad su minėtais web serveriai gali nepavykti atlikti tokių pat veiksmų. Kalbant bendrai tai tikriausiai daugumą PHP saitų puikiai veiks ir nereikės beveik nieko keisti.

šie du serveriia yra pritaikyti vieno vartotojo serveriams, o ne hostinimui. Beveik visais atvejais defaultinių galimybių pilnai pakanka, o nginx yra vos ne kaip programavimo kalba, plius per memcache kitos programos (kad ir php) galima dalį valdymo perduoti nginxui.

13

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

minde wrote:

MySQL'e tam yra VIEW'ai arba MEMORY/HEAP duomenų saugojimo variklį.

Bet pirmiausia tai aišku yra analizė - kodėl tiek ilgai užtrunka duomenų paėmimas iš DB, nes tai tik rodo, kad yra jau kažkas blogai su duomenų struktrom / užklausom.

Kešavimas dažniausiai naudojamas, tam kad nukrauti užklausas nuo DB. Taigi kešuoti į tą pačią db nelogiška. Taipogi reikia kurti kešo valdymą (trynimą objektų kurie expirinosi). MEMORY/HEAP saugojimo varikliai - apriboti ramu (arba db serverio nustatymais), taigi reikia rūpintis, kad lentelėse neprisikauptu per daug duomenų. MEMORY/HEAP - tai tas pats myisam tik tiek, kad duomenys saugomi rame. Tokios lentelės paveldi visus myisam minusus (table lock'us). Dažnai tokiose lentelėse atliekamos ne tik select užklausos, bet ir update / delete, todėl atsiremiama į table lock'us.

14

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

Ramex wrote:

xcache ir memcache. kokios realios naudos jie suteikia? vėlgi, kaip tai įtakoja kodo rašymą?

xcache - php opcode kešeris / optimizeris. jis kešuoja tavo php skriptus prieš tai paoptimizavęs. Taipogi jame gali saugoti ir savo objektus, tarkim dažnos užklausos rezultatą. Jeigu apache su mod_php -  duomenys  saugomi apache shared memory. Perkrovus apache, kešas dingsta. jeigu turi du web serverius, tai kiekvienas turės atskirą kešą. Kiek pamenu, jis veikia jeigu php kraunamas per mod_php arba fastcgi. Kitu atveju (cgi, suphp) jis neveikia, nes kiekvienai užklausai paleidžiamas atskiras procesas kuris nesidalina kešo atmintimi.

memcache - tai tinklinis cache serveris. Jis veikia nepriklausomai nuo web serverio. Jis pasiekiamas per tinklą. Jis naudojamas tuo atveju, jeigu daugiau nei vienas web serveris arba daugiau nei vienas memcache :) 

Vienu ir kitu atveju, tavo php scriptai turi žinoti, ką ir kur kešuoti. Tarkim kažkokios sql užklausos rezultatą.

Ramex wrote:

Sphinx Search. apie šį daiktą beveik išvis nieko nežinau, tik suprantu, kad jis skirtas atlikti full-text paieškai duomenų bazėje. ar tai reikalauja kodo pataisymų? ar duoda realią naudą lyginant su standartinėm MySQL galimybėm.

Sphinx Search gėris palyginus su mysql full-text. Jis leidžiamas kaip atskiras serveris. Full-text paieškas atlieka žymiai greičiau. Dažnai naudojamas, kai nėra galimybės naudoti myIsam dėl jo table locku. Norint naudoti, reiks keisti php skriptus, kad jie mokėtu ieškoti Sphinx. Naujas sphins, palaiko mysql protokolą, taigi galima jungtis su standartiniu mysql klientu.
jo minusai - didelis IO perindeksavimo metu. Pakeitus tekstą db, sphinx apie tai nesužinos kol pilnai neperindeksuosi. nauji duomenys į sphinx patenka, tik paleidus indeksavimą.

Re: nuomonės: xcache, memcache, lighthttpd, nginx, Sphinx Search

Tai kad visas serverio stabdis būna I/O, todėl kešavimas kaip tik turėtų vykti į atmintį. į diską kešuoti apsimoka nebent tik tai, kas yra labai ilgai generuojama. Vien sesijų perkėlimas į /dev/shm prideda performanco :)

Be to, manau kad kešavimas turi būti labai, todėl neįsivaizduoju, kam dar reikia lockų ir visokio kitokio mėšlo.