Reduza PID_MAX com segurança

3

Eu tenho um servidor em um cluster que estava passando por um vazamento de tabela de processo. Como o desenvolvedor responsável pelo código ficou indisponível por alguns dias, aumentei pid_max na máquina da seguinte forma:

echo 4194303 > /proc/sys/kernel/pid_max

Isso nos deu tempo até que o desenvolvedor consertasse o aplicativo e interrompesse o vazamento.

No entanto, agora gostaria de colocar o servidor novamente em linha com outras pessoas no cluster. Minha preocupação é que existem processos com pids na faixa de 3 milhões. Se eu reduzir pid_max ao seu valor normal, o que acontecerá com os pids já na tabela? O sistema precisa ser reiniciado?

    
por vastlysuperiorman 01.12.2014 / 18:02

2 respostas

1

Nada vai acontecer.

Eu desejo eu poderia dizer que o servidor iria explodir ou pelo menos pegar fogo, mas não ...

À medida que os PIDs são reciclados, eles ficam no intervalo definido. Você deve realmente reiniciar e tornar a nova configuração persistente em sysctl.conf. Mas, além dos problemas de preenchimento / campo, provavelmente não há mal algum em ter um maior número de PIDs disponíveis.

    
por 01.12.2014 / 19:59
1

Para reduzir pid_max , você precisa ter certeza de que os processos em execução do sistema estão com menos pid_max

ps -efL # L in ps list the threads, thread in linux has a pid as normal process

Eu usei isso na minha estação de trabalho linux:

ps -efL | wc -l
307
sysctl -a | grep pid_max
kernel.pid_max = 32768
sysctl kernel.pid_max=2000
kernel.pid_max = 2000
sysctl -a | grep pid_max
kernel.pid_max = 2000
echo $((2000-307))
1693  ## there is pids available for new "procs|threads" ## after pid_max reduce
    
por 01.12.2014 / 20:02