地址已在使用中:JVM_Bind 但未使用带有 netstat 的端口列出任何进程

Address already in use: JVM_Bind but no process is listed using port with netstat

我有一个 java 进程使用 ServerSocket API (Java 8) 并绑定到本地端口 12000。进程在 Windows 服务下运行包装器(exe4j)。我有一个在凌晨 4 点运行的计划任务,该任务会停止服务并在几秒钟后重新启动它。该过程安装在 400 多个客户位置。

直到大约上周五,一切都 运行 顺利。一些进程未能在凌晨 4 点正常重启。在我能够连接和验证的 2 台服务器上,重启都失败了 "Address already in use: JVM_Bind"。系统似乎仍在使用端口 12000。

我使用了我知道的所有工具(processexplorer、tcpview、netstat -ano,命名它)来尝试找到进程...但没有成功。只有机器重新启动才能解决问题。但是一两个晚上后问题又来了。

经过一番阅读,我看到我正在做一个 sockect.accept() 无限超时,所以我将其更改为 socket.setSoTimeout(15000); socket.accept(); 相反。

我安装了新版本,但问题仍然存在。

机器获得 Windows 更新。我用完全更新的相同 Windows 版本进行了测试,但我无法重现。

我现在无解了。

任何想法 谢谢

我遇到了同样的问题。我有几个 Java 个实例 运行 作为服务器,但是一旦这些 Java 应用程序中的任何一个被终止并重新启动,它们就不会这样做,抱怨端口仍在使用中。以前从未发生过,我过去常常重新启动它们。

我的 Windows 服务器机器几天前也收到了一些新的更新。

顺便说一句,我正在使用一个工具来监视端口和应用程序,而这些端口没有被任何程序使用,所以应用程序实际上被杀死了。

一个 windows 更新影响了进程关闭后 address/port 的发布。

参考Address Bind exception in Tomcat解决方法。