Allowed memory size error i po odinstalaci modulů

racekracek
14. říj 2013 09:03 #111774
Dobré ráno přeji,

v současné době řeším neustálé problémy se zobrazením stránek www.stastnystatek.cz , které běží u poskytovatele cesky-hosting.cz a používají Joomlu verze 3.1.5. Stránky jsou již cca 5 let staré, začínal jsem s Joomlou 1.5 a před rokem aktualizoval ruční migrací dat na současnou 3.1. U předchozího hostingu jsem měl nastavenou hodnotu php memory limit na 128MB a málo prostoru, proto jsem přešel na současný český hosting s memory limitem 256MB a 10GB místem pro data. U předchozího poskytovatele se čas od času objevovala klasická chyba s přetečením paměti Fatal error: Allowed memory size of 268435456 bytes exhausted, kterou se mi podařilo "odstranit" právě předchodem na větší memory limit. V poslední době, cca 3 měsíce se však objevuje stále častěji.

Na stránkách jsou nainstalovány následující moduly: Akeeba Backup, Artio JoomSEF, Chronoforms, XMap, Coala Web Traffic a Phoca Gallery. Hledal jsem na různých fórech, kde většinou v tomto případě pomůže odinstalovat modul, který se dostane přes limit, problém dle diskutujících mohl být způsoben právě Artiem nebo Phoca Gallery. Po odinstalaci Artio Joomsef byly strány pár dní v pořádku, problém se však objevuje zase a ani já, ani poskytovatel nejsme schopni jej vyřešit. Pomůže pouze obnova ze zálohy, za několik dní se však objeví znovu, je jedno, zda použiji půl roku starou zálohu nebo nejaktuálnější - starší záloha obsahuje Joomlu verze 3.1.1, 3.1.4 a aktuální 3.1.5.

Aktuálně mám zapnutou kompresi stránek pomocí GZip, ani její vypnutí nepomohlo.

Chyba se ovšem začíná objevovat zvláštním způsobem - při vypnutém zobrazování chyb se po načtení stránky www.stastnystatek.cz objeví prázdná stránka, po refreshi se v pořádku načte. Pokud kliknu kamkoli jinam, situace je stejná. V tomto případě se napodruhé po znovunačtení vždy stránky správně zobrazí s vyjímkou fotogalerie, která se v tuto fázi již neobjeví nikdy. Po zapnutí zobrazování chyb se zobrazuje následující chybové hlášení:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 80 bytes) in /home/www/stastnystatek.cz/www/stastnystatek.cz/libraries/joomla/database/driver/mysqli.php on line 777

s tím, že položka tried to allocate xxx bytes je vždy jiná v závislosti na načtené položce menu.

Zkoušel jsem postupně odinstalovávat všechny moduly a vždy promazat mezipaměť, toto však nepomůže.

Pravděpodobně se stále naplňuje nějaká tabulka v databázi, která přetečení zásobníku způsobuje, nejsem ovšem schopen zjistit, která.

Nyní jsem stránky zase obnovil ze zálohy, aby alespoň pár dní fungovaly. Pokud jste se někdo setkal s podobným problémem nebo máte nápad, v čem může být zakopaný pes, budu moc rád za jakoukoli odpověď.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Bong
14. říj 2013 12:21 #111779
Podívejte se kolik místa na serveru vlastně soubory a složky vaší Joomly vlastně zabírají.
Vymažte všechny cache Joomly, JoomSEF a uložené zálohy Akeeba Backup a podívejte se kolik místa na serveru vlastně soubory a složky vaší Joomly zabírají nyní.

Zaktualizujte Joomlu a všechna rozšíření na poslední verze.
Optimalizujte (nebo lépe opravte) všechny tabulky databáze, toto provedete v PhPMyAdmin.
Zkuste GZip vypnout a zapněte si cache (mezipaměť) v Joomla.

I'm sorry, my responses are limited...you must ask the right questions.
Poděkovali: racekracek

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
14. říj 2013 14:47 #111780
... zkontrolujte si zda nemáte v galerii, nebo někde jinde, nějaké výživné obrázky (např. 16 MPix apod...)
Poděkovali: racekracek

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od racekracek
14. říj 2013 20:10 #111787
Pánové, děkuji moc za odpovědi. Již před dotazem jsem vymazal cache, zálohy Akeeba a modul Artio Joomsef včetně uložených přepsaných url, celková obsazenost prezentace je v současné době 3,2 GB podle Filezilly. Dle webového rozhraní hostingu jsou údaje následující:

Prostor Využití diskového prostoru Počet souborů
WWW prezentace (FTP) 3259 MB / 10000 MB 21753 / 100000
E-maily 0 MB / 10000 MB 0 / 100000
Databáze 34 MB / 5000 MB

takže s místem by problém být neměl.

Joomla včetně všech komponent jsou v současné době aktuální. Dle Vaší rady jsem v aplikaci phpmyadmin provedl kontrolu, optimalizaci i opravdu všech tabulek v databázi a vypnul kompresi Gzip s tím, že cache je zapnutá. Tuto jsem ještě promazal.

Nyní stránky fungují bez problémů, uvidím cca za 5 dní, kdy se chyba vždy začala projevovat.

Zkontroloval jsem i obrázky, na stránce s informacemi o letních dětských táborech jsem měl umístěny dva odkazy na jízdu indiánským smykem v mpg, každý o velikosti cca 15 MB. Tyto jsem raději včetně odkazu vymazal, netuším, zda mohou chybu způsobovat (kromě podobných mnohem menších mpg souborů byly tyto dva přidány cca měsíc po aktualizaci na Joomlu 3.1).

Do galerie ukládám obrázky ve formátu png s velikostí 800x600 px a velikostí max 1,6MB (většinou cca polovina okolo 500kb) nebo jpg s velikostí 200kb. Phoca má povolené vytváření náhledů, tyto jsem zkopíroval z minulé Joomly 1.5 a využívám i nyní. Nejvíce místa zabírají obrázky z dětských táborů, ještě u minulého hostingu s omezenou kapacitou jsem u některých turnusů používal program pro zmenšení png souborů na adrese tinypng.org/ . Pomohlo by, kdybych tam, kde to jde, ještě zmenšil png obrázky a v celé galerii vymazal náhledy a znovu vygeneroval?

Vím, že Joomla 3.1 je STS verze, po migraci z 1.5 jsem se však právě pro ní rozhodl na základě doporučení na oficiálních stránkách, kde byla uvedena informace o nekompatibilitě šablony 2.5 a 3.x, nechce se mi zase tvořit nová, až vyjde verze 3.5. Pokud nic z výše uvedeného nepomůže, budu muset stránky znovu vytvořit v 2.5 a doufat, že se chyba neobjeví, to je ale moc práce, raději bych počkal a aktualizoval příští rok v březnu na 3.5.

Neexistuje nějaký PHP profiller použitelný pro Joomlu? Na extensions.joomla.org jsem nic nenalezl a ani poskytovatel nebyl schopen nic doporučit, velmi by pomohl nějaký skript, který by po zobrazení stránek zobrazoval naplnění memory limit, kde by se dalo nalézt úzké hrdlo.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Bong
14. říj 2013 22:21 #111788
Jestli se ten problém objeví zkuste se nejprave podívat do webového rozhraní hostingu znovu na ty údaje.

I'm sorry, my responses are limited...you must ask the right questions.
Poděkovali: racekracek

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
15. říj 2013 00:01 #111793
V globálním nastavení Joomly můžete nastavit Ladění. V zápatí stránek se pak ukazují nějaké základní profile informace. Jinak samozřejmě můžete použít jakýkoliv jiný PHP profiler, pokud Vám ho na hostingu povolí.
Poděkovali: racekracek

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od racekracek
15. říj 2013 08:52 #111797
Pokud se problém znovu objeví, údaje na webhostingu znovu zkontroluji pro porovnání. Děkuji i za tip ohledně ladění, informace v zápatí by měly stačit, paměťově je zatím vše OK. V případě dalších problémů se pokusím s poskytovatelem dohodnout např. na zprovoznění xdebug.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od racekracek
31. říj 2013 19:07 #112213
Konečně si mi podařilo nalézt řešení, popisuji jej níže, neboť bych rád pomohl těm, kteří budou v budoucnu řešit něco podobného.

Po šesti dnech stránky opět přestaly fungovat. Ještě jednou jsem prohlédl tabulky v databázi a zkoušel ruční odmazání těch největších. Ostranil jsem pozůstatky rozšíření Artio Joomsef - tabulky s prefixem sefxxx, což žádný výsledek nepřineslo a poté tabulku s názvem nz0di_jvcounter_logs. Zde se ukládaly logy z počítadla přístupů JVCounter, bohužel záznamy se nemažou a tabulka stále narůstá až do současných 113 040 záznamů. Tuto jsem promazal a rozšíření odinstaloval, po více, než týdnu používání se problém již neobjevuje a konečně mohu místo neustálé obnovy ze zálohy tvořit nový obsah. Provoz stránek se též citelně zrychlil.

Takže problém naštěstí není ve STS verzi, jsem rád, že mohu zůstat na současné 3.1, ze které bude aktualizace na 3.5 určitě jednodušší, než z kterékoli nižší.

Luděk Šťastný
Poděkovali: karel

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.