Nós incorporamos o sistema Linux sem troca.
Atualmente, devemos acionar o alarme quando o% de uso da memória aumentar durante um limite de threashold. E reinicie quando o uso da memória% aumentar acima de um limite (mais alto).
Por que queremos fazer isso: Se algum programa vazar, poderemos reiniciar com segurança, antes que o kernel comece a matar nossos processos (o que pode levar à corrupção ou indisponibilidade dos dados).
Mas temos um problema:
Como contar o uso de memória em% que pode ser usado para nosso propósito?
Tentamos contar o uso da memória usando valores de / proc / meminfo:
/ # cat /proc/meminfo
MemTotal: 126744 kB
MemFree: 58256 kB
Buffers: 16740 kB
Cached: 31308 kB
SwapCached: 0 kB
Active: 37580 kB
Inactive: 24000 kB
Sem sucesso:
(MemTotal - MemFree)
não é utilizável, porque contém, por exemplo, caches.
(MemTotal - MemFree - Buffers - Cached)
ignorou o efeito de Inactive
. Por isso, também fornece valores de uso de memória muito grandes.
(MemTotal - MemFree - Buffers - Cached - Inactive)
é inutilizável, porque o resultado pode ser negativo.
Nomeie como alert.sh e execute o comando:
chmod +x alert.sh
Configure um cron para executar este script a cada 10 minutos
Substitua '512' pela memória total do servidor em MB e '[email protected]' pelo endereço de email real. Isso enviará um alerta por email sempre que o uso da memória for superior a 95% e reiniciará o serviço "service_name" se atingir 90%
fonte
Você pode usar um script de shell no cron com o comando free para monitorar a memória e agir de acordo com seus valores. Por exemplo, para monitorar a memória RAM:
Em vez de repetir a saída, você pode avaliar os valores nos limites desejados e enviar por email, reiniciar ou qualquer ação que desejar:
Em seguida, adicione-o ao crontab para executar nos intervalos desejados.
fonte
outro utilitário útil do pacote sysstat é o sar.
Para informações de memória, use:
Eu definitivamente poderia usar mais memória RAM nesta caixa.
fonte