MemcachedStorage – nemažou se záznamy přes tagy po nějakým čase
- Kancek
- Člen | 2
Ahoj,
máme více webů, se stejným CMS, kde používáme memcache a mažeme záznamy
přes tagy. Doteď nebyl problém. Teď máme větší web, který podstatně
více využívá memcache a po nějaké době přestává fungovat mazání
záznamů pomocí tagů. Když ji celou vymažeme pomocí
Cache::ALL
, tak se změny projeví a zase mazání na chvíli
funguje, asi než se zase memcache více naplní (ne úplně celá). Dělalo to
s Nette 2.3 i 2.4.
Nevím jestli je podstatné posílat nějaké kódy, když to na jiných webech šlape jak má a tak bych soudil, že v tom chyba nebude.
Budu rád za nějakou radu, kde co ještě otestovat, nebo jestli se to někomu už někdy stalo ?
- ZahorskyJan
- Člen | 59
@Kancek stalo se mi přesně to stejné na našem eshopu a u nás to bylo způsobeno tím, že v určitých místech bylo několik cachovanych metod za sebou. I když se záznam správně invalidoval podle tagu, tak kvůli velké návštěvnosti se jeden z prvků stihl načíst špatně a pak to na výstupu vypadalo, že se to vůbec neinvaliduje. Přišel jsem na to docela náhodou. Do té doby se mi chybu nepodařilo na dev serveru replikovat.
Co ale nakonec s memcache byl největší problém u větší systému a provozu bylo to, že se pro fungování tagů využívá klasický nette file journal (mám pocit, že ve 2.4 nette ho nahradil sqllite) a nestačila nám u něj node size, která je nastavená konstantou v samotné třídě. Náhodně to přeteklo a shodilo celou aplikaci. Řešení bylo přejít na Redis jak pro cache tak pro journal a chystám se i na session. S Kdyby\Redis to bylo za chvilku a od té doby žádné problémy s cache nebyly.