Restart určité služby, když je RAM využita na 90%

Restart určité služby, když je RAM využita na 90%
« kdy: 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á?


Re:Restart určité služby, když je RAM využita na 90%
« Odpověď #1 kdy: 06. 04. 2020, 12:44:13 »
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.

RDa

  • *****
  • 2 675
    • Zobrazit profil
    • E-mail
Re:Restart určité služby, když je RAM využita na 90%
« Odpověď #2 kdy: 06. 04. 2020, 12:54:43 »
Nestacilo by to omezit skrze ulimit ?

Jose D

  • *****
  • 889
    • Zobrazit profil
Re:Restart určité služby, když je RAM využita na 90%
« Odpověď #3 kdy: 06. 04. 2020, 15:46:36 »
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

Re:Restart určité služby, když je RAM využita na 90%
« Odpověď #4 kdy: 07. 04. 2020, 00:12:53 »
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.


Re:Restart určité služby, když je RAM využita na 90%
« Odpověď #5 kdy: 07. 04. 2020, 15:22:33 »
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

Re:Restart určité služby, když je RAM využita na 90%
« Odpověď #6 kdy: 07. 04. 2020, 15:24:34 »
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ší :)

Rhinox

  • ***
  • 114
    • Zobrazit profil
    • E-mail
Re:Restart určité služby, když je RAM využita na 90%
« Odpověď #7 kdy: 07. 04. 2020, 20:48:46 »
Treba "monit" tohle dovede...

_Jenda

  • *****
  • 1 601
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Restart určité služby, když je RAM využita na 90%
« Odpověď #8 kdy: 08. 04. 2020, 00:20:12 »
Dát do cronu každou minutu skript s:
Kód: [Vybrat]
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

Re:Restart určité služby, když je RAM využita na 90%
« Odpověď #9 kdy: 08. 04. 2020, 06:56:11 »
Tak ho limituj cez cgroup..