netstat mostra porta aberta com pid para processo que não existe?

netstat mostra porta aberta com pid para processo que não existe?

Temos um programa que escuta uma porta para receber informações sobre a execução de um relatório. Ao fechar e reabrir o programa, recebemos um erro informando que a porta que ele utiliza já está em uso. Observando netstat, vemos que há 9 instâncias dessa porta no estado CLOSE_WAIT e 1 instância dela no estado de escuta. A instância que está no estado de escuta diz que pertence ao pid 488. O Gerenciador de Tarefas mostra que não há processo com esse ID e taskkilldiz o mesmo. O aplicativo é um aplicativo .NET interno.

Este é um ambiente de produção, por isso queremos evitar reiniciar a máquina. O que pode causar isso e o que pode ser feito para corrigi-lo?

Responder1

CLOSE_WAIT significa que o soquete recebeu um pacote FIN da outra extremidade e está aguardando para ser fechado pelo aplicativo que possui esse soquete de escuta. Não chamar close() em um soquete de escuta pode fazer com que ele flutue, como aconteceu com você.

Como é um aplicativo .NET interno, eu verificaria seu código-fonte para garantir que o soquete esteja sendo fechado () corretamente antes de sair.

Mais informações sobre estados de soquete, incluindo CLOSE_WAIT: http://blogs.technet.com/b/janelewis/archive/2010/03/09/explaining-close-wait.aspx

informação relacionada