Elimina ou revive um processo baseado no uso da memória do sistema

1

Considere um sistema com memória limitada, como um pequeno VPS. Suponha que haja um punhado de processos que precisam permanecer vivos e um processo "P" que seria bom ter por perto, mas não é estritamente necessário. O que eu gostaria de fazer é manter o P em períodos de baixa atividade, mas quando a atividade aumentar além de um certo limite, mate P até que a atividade diminua novamente, momento em que quero que P volte. Eu não tenho certeza ainda o que eu gostaria de "atividade" para dizer, mas poderia ser qualquer um: uso de memória, uso de swap, valores de carga do servidor.

Eu já estou usando o Monit, então seria bom se isso pudesse ser feito com o Monit. Tenha em mente que não quero dizer processo uso de memória, quero dizer, em geral, sistema carga. Eu não tenho que usar o Monit para isto, entretanto, se algo mais fizer o trabalho.

    
por Pistos 31.01.2012 / 19:31

2 respostas

2

Como cjc disse, a melhor maneira de contornar isso seria fornecer swap suficiente para manter todos os processos em execução.

Se você tiver muitos serviços que deseja manter disponíveis (mas não necessariamente ativos / em execução), talvez pense em inetd . Então eles serão iniciados somente quando alguém realmente se conectar a uma porta específica no servidor. A desvantagem: nem todos os protocolos têm inetd implementações.

    
por 31.01.2012 / 19:56
0

Em vez disso, uma pergunta antiga, mas minha resposta , para uma pergunta semelhante trata disso.

Versão resumida: você pode usar os sinais STOP e CONT para pausar e retomar a maioria dos processos intensivos de memória, e há uma ferramenta automatizada que faz isso quando o servidor está se debatendo.

    
por 04.10.2015 / 18:01