Утечка памяти — определяем — перегружаем ноду

(скрипт актуален для 16 эпизода)
Новая напасть случилась в 9 эпизоде — наша любимая нода начала «кушать» память как не в себя.
Не у всех. На разном железе. Через разные промежутки. (нужное дописать…)
Предлагаю очередной временный «костыль» — скрипт который будет раз в 5 минут смотреть сколько свободной памяти осталось на вашем сервере.
Если ее осталось меньше 500Мб — то скрипт просто перезагрузит вашу ноду. Если больше — просто оставит вашу ноду в покое на 5 минут
Хочу сразу обратить внимание что скрипт не смотрит на то какие еще ноды стоят вашем сервере и кто из них занимает оперативную память.
Например, если у вам с «Массой» рядом стоит еще и «Минима», и предположим, что ОЗУ будет забирать именно она, данный скрипт все равно будет искать именно «массу» и делать ей харакири.
Хочу предупредить что данный скрипт перегружает ноду и поэтому прежде чем устанавливать его советую выполнить эту инструкцию  Ну или хотя бы помнить о ее существовании.

 

Основной скрипт
(Блок ниже нужно скопировать и вставить сразу весь, в командной строке, не построчно.)
sudo tee $HOME/memory.sh > /dev/null <<EOF
#!/bin/bash
#Версия 0.01
cd \$HOME/massa/massa-client
#Set variables
memory=\$(sudo free -m |grep "Mem:"|awk '{print \$4}')
if [ \$memory -gt "500" ]; then
#echo "Ok" > /dev/null
echo "Ok"
else
/usr/bin/sudo systemctl restart massad
echo \`/bin/date +"%b %d %H:%M"\` "(memory) memory left only \$memoryMB, reboot node" >> /root/rolls.log
fi
EOF

Добавляем задание демону cron на выполнение файла memory.sh каждые 5 минут
Будем использовать локальный демон. Задание будет находиться в файле memory.sh и располагаться в папке /etc/cron.d/
Файл crontab
(Блок ниже нужно скопировать и вставить сразу весь, в командной строке, не построчно.)
printf "SHELL=/bin/bash
*/5 * * * * root /bin/bash /root/memory.sh > /dev/null 2>&1
" > /etc/cron.d/memory

Файл логов
(Блок ниже нужно скопировать и вставить сразу весь, в командной строке, не построчно.)
sudo tee $HOME/rolls.log > /dev/null <<EOF
Лог файл создан удачно.
EOF

Посмотреть последние 50 строк лога
tail -n50 $HOME/rolls.log
(Это общий файл со скриптом Контроль за падением rolls и автоматическая их покупка поэтому в данном файле могут быть и записи от работы этого скрипта тоже)
Очистить содержимое лога
cat /dev/null > $HOME/rolls.log
Не забывайте что это не панацея, а лишь очередной костыль.

Как удалить скрипт:

Удаляем сам скрипт
/usr/bin/rm $HOME/memory.sh
Удаляем файл запуска скрипта по времени
/usr/bin/rm /etc/cron.d/memory
Удаляем log-файл
/usr/bin/rm $HOME/rolls.log

 

Что еще почитать по ноде Massa:
Контроль за падением rolls и автоматическая их покупка
Все что вам нужно знать про bootstrap
Почему слетают rolls и что с этим делать?
Костыль для 8 эпизода ноды massa
Как удалить лишний кошелек ноды massa?