Como limitar o uso de memória por aplicativo no linux?

3

Eu tenho um software de código fechado com alguns problemas de vazamentos de memória. Existe uma ferramenta ou solução para "sandboxe" processos em uma quantidade fixa de memória sem usar "ulimit" (para genéricos, eu preciso de um controle de memória por aplicativo)

    
por edomaur 03.03.2010 / 10:13

3 respostas

3

'ulimit' é um controle 'por aplicativo' ... de fato, por processo. O comando shell ulimit é um shell embutido definindo o limite para o processo de shell e seus filhos. Coloque o comando 'ulimit' no script iniciando seu aplicativo e o limite será definido apenas para este aplicativo.

    
por 03.03.2010 / 10:25
0

Você poderia usar um daemon de gerenciamento de processos como monit para monitorar a quantidade de memória em uso pelos seus processos e reiniciá-lo quando crescer acima do limite definido.

Isso soa drástico, mas dado que seu aplicativo é conhecido por vazar, reiniciá-lo regularmente com base em seu uso é apenas adiar o inevitável, quando o tamanho do processo cresce maior que o menor, a memória física de suas máquinas ou qualquer endereço limitações de espaço impostas pelo seu sistema operacional.

    
por 03.03.2010 / 10:21
0

Use cgroups. link

Observe a diferença entre memory.limit_in_bytes e memory.memsw.limit_in_bytes . Observe também memory.soft_limit_in_bytes . link

    
por 13.04.2015 / 15:33