fi-ksi / web-backend

Backend for KSI web written in Python.
MIT License
8 stars 3 forks source link

Backend zabírá moc paměti #178

Closed esoadamo closed 1 year ago

esoadamo commented 1 year ago

Backend poslední dobou padá kvůli příliš zabrané paměti. Mám podezření, že by za to mohl moct Reporter, protože jsem několikrát viděl pád bezprostředně po POSTu na modul Mocniny. Tento modul je první úloha, kde řešitelé používají while a používá print, takže občas se něco do nekonečna zacyklí a teoreticky by to mohlo způsobit přetečení paměti.

esoadamo commented 1 year ago

Možná opraveno pomocí https://github.com/fi-ksi/web-backend/commit/538860fe7585bfbfaa37da725a91c8280838be8d , uvidíme, jestli to bylo ono

esoadamo commented 1 year ago

Dnes opět spadlo, takže fix asi nefungoval :slightly_frowning_face: Záznam z logu Apache

%IP% - - [24/Sep/2022:17:30:25 +0200] "POST //runCode/881/submit HTTP/2.0" 502 0 "https://ksi.fi.muni.cz/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
%IP% - - [24/Sep/2022:17:30:25 +0200] "POST //runCode/881/submit HTTP/2.0" 502 0 "https://ksi.fi.muni.cz/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"

Záznam z logu serveru:

[2022-09-24 17:32:30 +0200] [275004] [INFO] Handling signal: term
[2022-09-24 17:33:00 +0200] [296344] [INFO] Booting worker with pid: 296344
[2022-09-24 17:33:00 +0200] [296343] [INFO] Booting worker with pid: 296343
[2022-09-24 17:33:00 +0200] [296342] [INFO] Booting worker with pid: 296342
[2022-09-24 17:33:00 +0200] [296341] [INFO] Booting worker with pid: 296341
[2022-09-24 17:33:08 +0200] [275004] [INFO] Shutting down: Master

Modul 881 jsou opět nechvalně známé Mocniny, ve kterých se vysvětlují cykly. Stále věřím, že někde se prostě vyprodukuje obrovský soubor ze zacykleného programu, který se poté rovnou přečte do paměti. Nevím ale kde se toto děje, nový reporter čte soubory po 4096 znacích a vše nad 50KB zahazuje

esoadamo commented 1 year ago

Podle toho requestu to vypadá, že problém dělá runCode, ale i ten má omezení na čtení výtupu na 5000 znaků

esoadamo commented 1 year ago

Oh, tak snad mám viníka, který nekontroluje délku vstupu

esoadamo commented 1 year ago

Snad fix https://github.com/fi-ksi/web-backend/commit/987a1ec7afc21c5b6368624435d691e1f3e54448 už bude všechno, uvidíme do budoucna

esoadamo commented 1 year ago

Vypadá, že už se neprojevuje. Opraveno.