Olá a todos!
Recentemente eu tive um problema com alguns de meus roteadores Linux onde também rodam algumas máquinas virtuais. A memória cache dessas máquinas estava muito alta, e isso causava uma certa lentidão no sistema. A solução é simples, basta executar o seguinte comando:
# echo 3 > /proc/sys/vm/drop_caches
Ou então
# sysctl -w vm.drop_caches=3
Esse comandos limpam todos os caches da memória. É chato porém ter que ficar monitorando o tempo todo e executando comandos, então eu criei um shell script que é agendado no crontab para ser executado a cada 30 minutos (este é o tempo que eu percebi para o crescimento da memória utilizada, pode variar para cada um). O script tem o seguinte conteúdo:
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
TMEM=`free -m | awk 'NR == 2 {print $2}'` # Variável para memória total
UMEM=`free -m | awk 'NR == 2 {print $3}'` # Variável para memória usada
PMEM=`echo $((40 * $TMEM / 100))` # Variável para 40% da memória total
if [ $UMEM -ge $PMEM ] # Se a memória usada for maior ou igual a 40%
then
echo 3 > /proc/sys/vm/drop_caches # Limpa os caches
else
exit;
fi
Agora basta dar permissão de execução (chmod + x cache.sh ou chmod 755 cache.sh) e agendar a sua execução:
crontab -e
30 * * * * sh /opt/cache.sh
Simples e útil!!!
Até a próxima !!!
Nenhum comentário:
Postar um comentário