É normal que o PID seja maior que 65535?

5

Eu tenho um VPS gerenciado em execução no padrão CloudLinux 6.6 x86_64.

Tem alguns sites com MySQL, PHP e Apache rodando com o CPanel.

Estou trabalhando em um sistema PHP que precisa gerenciar um PID e detectar seu status.

Eu defini um campo smallint (2 bytes) no meu banco de dados MySQL para armazenar o PID.

Mas hoje, notei algo estranho:

O serviço estava "agindo" e dizendo que o processo não estava em execução quando, de fato, a tarefa terminou.

Eu procurei e havia processos com PIDs tão altos quanto 997282 (o mais alto até agora).

Eu tentei analisar isso no Google e nada que me ajuda.

Eu só encontrei informações sobre o arquivo /proc/sys/kernel/pid_max que eu usei para ler e obter o PID máximo de lá, que é 1048576 .

É normal ter o PID acima de 65535?

Tipo de não relacionado: o servidor está gritando por uma reinicialização quando o PID está acima de 10000?

Qualquer informação adicional que você possa precisar, estou disposto a fornecer até um certo ponto em que nenhum segredo seja revelado.

    
por Ismael Miguel 28.11.2014 / 16:20

2 respostas

6

Os PIDs são reciclados. Quando um processo sai do seu PID pode ser usado mais tarde por outro processo, então você não "corre" ou precisa reiniciar simplesmente porque existe um PID perto do valor máximo. Mas veja abaixo ...

Eu não modifico este parâmetro sysctl a menos que seja necessário; por exemplo. trabalhando em um sistema ocupado com muitos processos de curta duração ou um aplicativo altamente multithread com processos de execução longa.

Normalmente eu defino 99999 ou alguns casos , 999999 ...

Em um caso notável, eu tive um servidor de banco de dados que ficou sem IDs de processo. PIDs estavam sendo esgotados por uma média de 9.000-10.000 conexões de banco de dados simultâneas. Cada um gerou vários segmentos, atingindo o limite de 32.768 configurado no sistema operacional. Isso elevou a média de carga do sistema devido à alta fila de execução.

Aumentar o valor máximo do PID aliviou a pressão.

Editar:

Se este for um VPS, acho que o host teria um valor alto pid_max porque os PIDs são compartilhados entre os convidados no sistema. É provavelmente para fornecer headroom.

    
por 28.11.2014 / 16:28
3

O número máximo teórico de pid de sistemas de 32 bits é 32768 e para sistemas de 64 bits 4194304. Você pode definir outro limite abaixo desses números no arquivo que você mencionou na sua pergunta ( /proc/sys/kernel/pid_max ).

Se o pid_max for atingido (por processos em execução), o sistema não permitirá que novos processos sejam criados até que os existentes saiam e sejam limpos. Então você não tem nenhum problema a menos que seu sistema tenha 1048576 executando processos.

    
por 28.11.2014 / 16:28

Tags