¿Netstat muestra un puerto abierto con pid para un proceso que no existe?

¿Netstat muestra un puerto abierto con pid para un proceso que no existe?

Tenemos un programa que escucha en un puerto para recibir información sobre cómo ejecutar un informe. Al cerrar y volver a abrir el programa, nos aparece un error que dice que el puerto que utiliza ya está en uso. Al observar netstat, vemos que hay 9 instancias de ese puerto en el estado CLOSE_WAIT y 1 instancia en el estado de escucha. La instancia que está en estado de escucha dice que es propiedad del pid 488. El Administrador de tareas muestra que no hay ningún proceso con ese ID y taskkilldice lo mismo. La aplicación es una aplicación .NET interna.

Este es un entorno de producción, por lo que queremos evitar reiniciar la máquina. ¿Qué podría causar esto y qué se puede hacer para solucionarlo?

Respuesta1

CLOSE_WAIT significa que el socket ha recibido un paquete FIN del otro extremo y está esperando a que la aplicación propietaria de ese socket de escucha lo cierre. No llamar a close() en un socket de escucha puede hacer que flote, como lo hizo en su caso.

Como es una aplicación .NET interna, verificaría nuevamente su código fuente para asegurarme de que el socket esté cerrado () correctamente antes de salir.

Más información sobre los estados de los sockets, incluido CLOSE_WAIT: http://blogs.technet.com/b/janelewis/archive/2010/03/09/explaining-close-wait.aspx

información relacionada