Fatal error: Out of memory

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Barbarossa
Člen | 74
+
0
-

Ahoj,

na webu se nám objevil problém, který asi na dvě hodiny vyhazoval 500 – v logu: Fatal Error: Out of memory (allocated 2097152) (tried to allocate 569344 bytes) in Cache\FileStorage.php:350 (kde je stream_get_contents). Html exception nic jiného nezapsala.

Že došlo k vyčerpání memory limitu chápu, ale jak to mohlo odstavit web na dvě hodiny (web funguje dlouhou dobu a už asi 12 hodin funguje normálně dál – nikdo se v době výpadku ničeho nedotkl, protože ani nebyl nikdo dispozici).

Z NGINX z té doby:
rewrite or internal redirection cycle while internally redirecting to „/robots.txt///////////“ (z podobného případu)

Postihlo to celé VPS kde je více verzí PHP (včetně různých konfigurací, tam kde je nastaven větší memory limit to skončilo na execution time).

Budu rád za každé nakopnutí nebo podmět. Dík moc.

Editoval Barbarossa (13. 7. 2017 9:03)

Zuben45
Člen | 268
+
0
-

Z NGINX to vypadá že došlo k zacyklení přesměrování, zkoušel jsi jít na adresu

/robots.txt///////////

co mě tak napadá, tak jestli třeba není chyba v routeru, dále porozklikovat si exception a kouknout kde to začalo.

Barbarossa
Člen | 74
+
0
-

Zuben45 napsal(a):

Z NGINX to vypadá že došlo k zacyklení přesměrování, zkoušel jsi jít na adresu

/robots.txt///////////

co mě tak napadá, tak jestli třeba není chyba v routeru, dále porozklikovat si exception a kouknout kde to začalo.

Díky za reakci.
/robots.txt/////////// neexistuje – Nette 404 (tj PHP je zde zatěžováno jestli se to dá takto napsat).
HTML Exception file nic jiného kromě toho fatal erroru nenabízí a dříve se v logu žádná jiná chyba nenachází.

nightfish
Člen | 518
+
0
-

Serveru prostě došla paměť – monitoroval bych to, buď je to celkovým zvýšením zátěže serveru (např. kvůli návštěvnosti), pak pomůže asi jenom navýšení paměti nebo rozložení zátěže na víc strojů, nebo je na vině nějaký memory leak…

Pavel Kravčík
Člen | 1196
+
+3
-

Nemáš ještě nějaké datové složky kam by šahal RobotLoader? V tom případě by tam bylo dobré dát netterobots.txt.

Například mPDF v /app/ složce shazovalo Nette s bílou stránkou.

Barbarossa
Člen | 74
+
0
-

nightfish
Díky. Bylo to v ranních hodinách a tou dobou web má zanedbatelnou návštěvnost (a bylo tomu tak i včera podle GA). Ale chápu co tím chceš říct a jsme si vědomi toho, že PHP přečerpalo svůj povolený limit protože se to zahltilo nějakými requesty… Snažíme se přijít na to co konkrétně to způsobilo a proč to odstřihlo web.

Pavel Kravčík
Díky to je dobrý podmět. Nevím sice o ničem co by to mohlo způsobovat. Robot loader je nastavený jen pro App a tam nic jako Mpdf nebo něco co by mohlo vyžírat tolik RAM nemáme. Nicméně tohle ještě pořádně prozkoumám.

Web / server je myslím dobře optimalizovaný po všech stránkách a běžně snáší vysokou návštěvnost. Ale tento ranní případ je pro nás velkou neznámou. Na některých místech se nette cache Filestorage snaží načíst více jak 2 MB soubory – pravděpodobně tedy z temp složky kde je čistě jen Nette.

Pavel Kravčík
Člen | 1196
+
0
-

Taky je možné, že ráno přišel nějaký robot a pokoušel se najít robot.txt „hardway“.

nightfish
Člen | 518
+
+1
-

Barbarossa napsal(a):

nightfish
…jsme si vědomi toho, že PHP přečerpalo svůj povolený limit…

Myslel jsem to jinak – PHP nepřekročilo memory_limit (to by byla hláška Fatal Error: Allowed Memory Size of … exhausted…), ale serveru prostě došla volná paměť. Takže problém nemusí být vůbec v PHP, ale třeba v jiných věcech, které na tom serveru běží. Prohledejte serverové logy…

Barbarossa
Člen | 74
+
0
-

Pavel Kravčík
Nějaký zlý bot, zdá se mi…

nightfish
Hmm takhle se to má… Když nad tím přemýšlím dál napadal mě jedna věc. Může se stát že za to čistě teoreticky může poskytovatel VPS? (že jim třeba shořela RAM a chvilku trvalo než se to nahodilo či tak něco). Ve většině případů totiž máme 2 – 3 GB RAM rezervu. Je pro to nějaký log?

nightfish
Člen | 518
+
+1
-

Ve většině případů totiž máme 2 – 3 GB RAM rezervu. Je pro to nějaký log?

Předpokládám server postavený na Linuxu: Jestli máš přístup k /var/log/messages, tak se můžeš mrknout po řádcích obsahujících oom-killer – to by nasvědčovalo právě vyčerpané paměti. Ale čím byla paměť obsazená z toho obávám se nevyčteš…

Každopádně pokud by za to mohl hardwarový problém poskytovatele VPS, tak by vám to poskytovatel VPS měl na dotaz sdělit.