Fatal error: Out of memory
- Barbarossa
- Člen | 74
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)
- Barbarossa
- Člen | 74
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í.
- Pavel Kravčík
- Člen | 1196
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
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
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
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
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
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.