Fórum Root.cz
Hlavní témata => Server => Téma založeno: KeaganIronghast 06. 04. 2020, 12:42:12
-
Ahoj,
jak efektivně udělat script, který by měl restartovat určitou službu, když je RAM z 90% vytížená?
-
Efektivně toto uděláte blbě, protože nejprve si musíte říct, co to vlastně znamená "RAM využita na 90 %", protože typy využití se liší.
Pokud jde o nějakou službu, která sežere RAM, asi by se to mělo řešit jejími limity a o svoje zdraví by se měla postarat sama. Externě (nad službou) to nebude fungovat dobře, to je milionkrát ověřeno v praxi.
-
Nestacilo by to omezit skrze ulimit ?
-
jak efektivně udělat script, který by měl restartovat určitou službu, když je RAM z 90% vytížená?
Neřešilo by to to trochu systematičtěji nastavení MemoryMax=bytes[1] a "Restart=always" v unitě?
Ale jak naznačuje kolega Šilhavý výše, jde jen o workaround, pořádné řešení vypadá zcela jinak.
[1] systemd.resource-control — Resource control unit settings, https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
-
jak efektivně udělat script, který by měl restartovat určitou službu, když je RAM z 90% vytížená?
Neřešilo by to to trochu systematičtěji nastavení MemoryMax=bytes[1] a "Restart=always" v unitě?
Ale jak naznačuje kolega Šilhavý výše, jde jen o workaround, pořádné řešení vypadá zcela jinak.
[1] systemd.resource-control — Resource control unit settings, https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
No mně jde o to, že jedna má služba má hroznej memory leak, a já bych potřeboval restartovat jí, při využítí RAM obecně kolem 90%, abych předešel pádu té služby. Je to dočasné řešení, než programátor vyřeší daný leak.
-
Jste zoufalý? Tak tady je skript pro zoufalce (13 let stary, ale bude fungovat i ted): https://www.abclinuxu.cz/blog/Mihovy_sochory/2007/3/obraz-cireho-zoufalsvi
-
Jste zoufalý? Tak tady je skript pro zoufalce (13 let stary, ale bude fungovat i ted):
Aneb jak udělat z velkého problému ještě větší :)
-
Treba "monit" tohle dovede...
-
Dát do cronu každou minutu skript s:
m=`free -m | head -n něco | tail -n 1 | tr -s " " | cut -d " " -f něco`
if [ $m -ge 10000 ]; then
systemctl restart služba
fi
-
Tak ho limituj cez cgroup..