Oldal: 1 / 1

Memcache

HozzászólásElküldve: 2011.05.25. 11:37
Szerző: Locky
Hali.

Azt szeretném megtudni hogy telepítve-e van a memcache a szerverre.
Lényegében annyit tud, hogy az adatbázisok terheltségét jelentősen csökkenti. 80-90%-ról képes lehet olyan 5-10%-ra terhelni.

Csak ezt általában nemszokták mindenhol telepíteni.

Re: Memcache

HozzászólásElküldve: 2011.06.15. 17:10
Szerző: Locky
Még mindig a memcache után érdeklődök....

Re: Memcache

HozzászólásElküldve: 2011.06.15. 18:20
Szerző: l2sh
Hali!

Szerintem nincs futtatva a memcached szerver. Viszont PHP-ben vannak más cache-elési lehetőségek, mint pl. az object-cache vagy az output buffering. Nincs annyi elérhető memória, hogy nagyobb adatokat tároljunk, 32 Mb a max minden felhasználónak. Felesleges egy szimpla weboldalhoz memcached, mivel az sql lekérdezések kb csak 1-2 rövid queryből állnak, és általában kis adatok, az sql meg amúgy is automatikusan cache-eli magának a select eredményeket egy ideig. Ha nagyon processzorigényes a kód, amit futtatni akarsz, akkor ajánlom az output bufferinges fájl cache-t, tehát a számított adatokat kiíratod egy fájlba, vagy akár adatbázisban is tárolhatod, seperc alatt lekéri. Ami lassúságot okoz, az a nagy adatok lekérése, netán a WHERE utasítással, ami soronként ellenőriz megszórva egy pár számtani művelettel, pl. ha 1000 felhasználó egyenként 1000 sort kér le ilyen módon, viszont ha egyszerre kérik le, az sql az elsőt tárolja, és a többi felhasználó milliszekundumok alatt megkapja azokat. :) Dinamikus adatokból meg általában nem szokott lenni több ezer sor.

Re: Memcache

HozzászólásElküldve: 2011.06.16. 05:45
Szerző: Locky
Toplistát üzemelek, és gondoltam csökkentem a terhelést, hogy jobb legyen mindenkinek, és ne mindig generáljon a button.php szavazóképet mert az elég terhelő, hanem töltse be cache-ből. Ennek 2 elönye is van, első hogy gyorsabban bejönnek az image-k a regisztrált oldalakon, 2. hogy nem terheli ugy a szervert.

Re: Memcache

HozzászólásElküldve: 2011.06.16. 10:22
Szerző: l2sh
Locky írta:Toplistát üzemelek, és gondoltam csökkentem a terhelést, hogy jobb legyen mindenkinek, és ne mindig generáljon a button.php szavazóképet mert az elég terhelő, hanem töltse be cache-ből. Ennek 2 elönye is van, első hogy gyorsabban bejönnek az image-k a regisztrált oldalakon, 2. hogy nem terheli ugy a szervert.


Szerintem egy toplista nem használ annyi erőforrást, max a netkapcsolatot, ha sok képről van szó, de azt nem tudod kijátszani. Ha meg maga a kód lassú, azon lehet optimalizálni. Legjobb módszer, ha a képek elérési útvonalát adatbázisban tárolod, és minden táblának legyen egy primary key-e, ami lehetőleg szám legyen, mert a leggyorsabban egy lookup table-ből lehet lekérni adatokat, az sql pedig a növekvő számos primary key táblákat úgy tárolja.

Pontosan milyen szavazóképet generál? Az nem jó megoldás, ha sűrűn nagy adatokat számítgat, akkor a kódban van elrontva valami. Egy szavazás csak eggyel növel egy számot, ami egyáltalán nem terhelő. A nagy adatokból meg nem muszáj mindig a legfrissebbet lekérni, pl. óránként egyszer cache-eli, és az elég neki.

Re: Memcache

HozzászólásElküldve: 2011.06.16. 11:46
Szerző: Locky
Kicsit hosszú ezt leírni, de az okhost-os blogon van is róla egy cikk:
http://blog.okhost.eu/2010/03/toplista- ... eltetelei/

De ha gondolod becsatolom a button.php-t és megnézheted a terheltségi dolgokat.

Re: Memcache

HozzászólásElküldve: 2011.06.16. 12:30
Szerző: l2sh
Locky írta:Kicsit hosszú ezt leírni, de az okhost-os blogon van is róla egy cikk:
http://blog.okhost.eu/2010/03/toplista- ... eltetelei/

De ha gondolod becsatolom a button.php-t és megnézheted a terheltségi dolgokat.


Ja, hogy statisztikáról képgenerálós toplista. :D Azt hittem, szimpla szavazós, és a szavazatokat a toplistán kiértékeli. Nem semmi, mert sok kép cache-elése hamar megtelítené a memóriát. Képeket is meg lehet oldani szimpla cache-elési módszerrel, vagyis kimented fájlba, nem kell mindig csak az outputra írni a statisztikával együtt, mert az tényleg lassítja, ráadásul mindig lekéri a statisztikát az adatbázisból. Csak azokat a képeket generálja újra fájlba, amiknek a módosítási dátuma kisebb, mint a statisztika táblában levő last_update oszlop, aminek meg lehet adni alapértéknek, hogy minden update-kor frissüljön, tehát:
Kód: Egész kijelölése
`last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

De ez dinamikus adat, és az ellen nem tudsz mit tenni, hogy ha valaki rákattint, akkor a szavazás számát megnöveli eggyel, majd ha újratöltik az oldalt, akkor a kép újragenerálódik, viszont addig fájlból nézi, amíg nem történik újbóli frissítés. Nem kell mindig akkor generálni a fájlt, mikor rákattintanak, inkább a megjelenítéskor generálja egyszer, ha friss az adat.

Mert az nem mindegy, ha egymás után 100-szor kattintanak, és százszor generálja a képet, vagy 100-szor kattintanak, és csak 1 valaki tölti újra az oldalt, akkor nem fog minden eggyel növelésnél generálni képet, hanem tényleg csak akkor, amikor kell.