Ajustes de pontuação OOM

1

No Ubuntu 12.04 / Java 1.7

Eu tenho lido / pesquisado sobre OOM killer e geralmente entendi o que a página man "proc" diz especialmente oom_adj part. Tudo começou porque meus importantes "ouvintes MQ" estão sendo mortos.

Temos um processo de ouvinte principal que ouve mensagens do MQ e gera um novo trabalho usando o mesmo arquivo jar, diferentes argumentos de linha de comando. Ele usa Runtime.getRuntime (). Exec para disparar o trabalho.

A coisa toda é executada como um usuário com privilégios muito baixos - um usuário que não possui outras permissões.

Minha preocupação é que a pontuação da OOM para o processo do ouvinte continue aumentando, pois ela continua gerando o processo e, eventualmente, é eliminada, supondo que a chamada java exec use o fork internamente.

  1. Como altero o valor oom_adj para um processo acionado por um usuário com poucos privilégios? Caso contrário, isso significa que todas as pessoas que podem implementar o arquivo jar precisam ter permissões sudo.

  2. Existe alguma chamada / arquivo que eu possa usar para obter pontuações OOM de todos os trabalhos para descobrir qual deles é provável que seja morto? Procurando um relatório semelhante ao que foi registrado no arquivo syslog, mas sem realmente matar as tarefas

por user871199 12.11.2015 / 01:01

1 resposta

0

Usar oom_score_ajk para corrigir esse problema é uma maneira ruim de fazer isso. Mesmo se você ajustar a pontuação do OOM, alguma coisa será eliminada e, eventualmente, será algo que você não deseja morrer (o ouvinte do MQ ou um serviço do sistema principal como o syslog / cron). / p>

A solução confiável para o seu problema é obter mais memória (RAM + swap) ou reduzir o uso de memória do seu aplicativo.

    
por 12.11.2015 / 08:49