Memcached - víc kousků dat nebo pole?
Stále ladím memcached tedy cache serveru v RAM. Uvědomil jsem si, že v jednom okamžiku potřebuji načíst vždy dvě hodnoty, které spolu souvisí. Co bude lepší? Načíst každou zvlášť nebo obě najednou? Jasně načíst všechno najednou v jednom poli a neptát se na dvě položky. Celkový efekt?
Před tím, než jsem dvě hodnoty dal do jednoho pole spadla první hodnota do SLABu 96bytes a druhá do 120bytes = 216bytes. Když jsou obě dohromady vejdou se do SLABu 152bytes. Úspora 30%. No jo, jsou to zlomky zlomků, ale bavíme se o desítkách až stovkách tisíc každý den a to už něco dá. Dobrých 6MB doma.
Jak dlouho trvalo než se cache 1GB zaplnila? Zhruba 7 hodin, pak už se cache musela začít recyklovat a zahazovat kousky, které často nepotřebuje. Na grafu je vidět, že za další hodinu už byla optimalizovaná skoro na max a její efektivita už dál moc nerostla. Jen nepatrně. Jeji efektivita je přes 72% (na tolik otázek najde odpověď, zbylých 28% tam uloženo není).
Zajímavý je také fakt, že cache se začala vyplácet už po 10 minutách, kdy překonala bod, že dokázala najít víc požadavků než toho co jí chybí.
Po dosažení max kapacity začala cache zahazovat věci, co dlouho nikdo nechtěl. Je tam hezky vidět, jak počet položek šel dolů a zase mírně nahoru atd. Celkový počet stran (moje primární data, která sleduju) se také ustálil. S nadsázkou by šlo říci, že po 8 hodinách nabrala, co mohla nejvíc a to co bylo dál jsou už jen drobky.
Teď je potřeba dát tomu čas, udělat delší grafy a pak zkusit cache navýšit na 1,5 či 2GB RAM a sledovat znovu, zda to má nějaký přínos nebo ne a o kolik.
Co jsem vyzkoušel na malém projektu, tedy malý rozsah stran to efekt nemá. Nechal jsem cache prostor 64MB RAM a zní cache udělala šuplíky, které zabraly 27MB dat, 2MB jsou data. Prostě cache má opravdu význam jen tam, kde to vře.
Přemýšlel jsem jestli taková cache není vhodná pro nějaký další můj projekt a bohužel ne. Na třetím serveru jsou sice vytížené projekty, ale jsou malé, datově nenáročné, hodně optimalizované už nyní.
Na druhém, tedy blogy, jsou zase rozstříštěné. Tedy ne že by tu nebyl šrumec, ale žádný obsah nejde na dračku. Hodně jsou to unikátní strany a nemá smysl cachovat to co se za den zobrazí párkrát. Hrát si s cache mě baví, ale tady by to uškodilo. RAM je málo už teď a ještě bych jí měl ukousnout na cache jako paměť nad? To nedává smysl. A přikupovat RAM bohužel taky nedává ekonomický smysl.