请参阅下面的更新。我们认为我们已经找到了根本原因和解决方案
我们也遇到同样的问题:一个运行近一年没有问题的tomcat服务在停止并重新启动后无法绑定到它使用的端口。
我们通常每晚定期停止并重新启动 Tomcat 服务,并且它曾经工作没有问题。该问题首次出现在 7 月 24 日,因此,经过我和我们的 IT 部门所做的大量研究,我怀疑 7 月 24 日之前不久发生的 IT 基础设施的某种变化导致了这个问题。
我们的服务器是 Windows Server 2012 R2,64 位,但我们的 IT 环境是虚拟化的,在 vSphere 主机版本 6 上运行。您的 tomcat 在什么服务器/基础设施上运行?它是虚拟化系统还是在物理服务器上运行?
在我看来,问题出在最后安装的 Windows 补丁上
(KB4338815 和/或 KB4339093)或某些虚拟机管理程序更新。但我们的 IT 仍在研究。
目前作为解决方法,我们在关闭服务时重新启动服务器
并每晚定期重新启动。但由于问题不可靠发生在
每次关闭/重新启动时,我们仅在确实有必要时重新启动服务器。为了实现这一点,我们使用在 server.xml 中实现和配置的侦听器,该侦听器在 tomcat 服务启动后立即扫描 stderr.log。如果检测到发生绑定异常,则会重新启动服务器(tomcat 服务会自动安装)。如果您找到此问题的原因,请在此处发布,如果我或我们的 IT 部门能够找到的话,我也会这样做。
8月7日更新:我们认为我们已经找到了根本原因。显然,7 月份的 Windows 每月质量汇总引入了这个问题。在我们的案例中(Windows Server 2012 R2,64 位),有问题的更新是 KB4338815(请参阅https://support.microsoft.com/en-us/help/4338815/windows-81-update-kb4338815 https://support.microsoft.com/en-us/help/4338815/windows-81-update-kb4338815).
如果您在互联网上进行快速研究,您会发现该问题(也影响 Windows IIS Webserver 和 MS SQL Server)大多与 KB4338818 相关(请参阅https://support.microsoft.com/en-us/help/4338818/windows-7-update-kb4338818 https://support.microsoft.com/en-us/help/4338818/windows-7-update-kb4338818)但这与 Windows Server 2008 R2 和 Windows 7 的更新类型相同。
Microsoft 已经意识到该问题,并在上述文章的“此更新中的已知问题”部分的 KB4338815 和 KB4338818 文档中对此进行了描述。 Microsoft 表示该问题已在 KB4338831(适用于 Windows Server 2012 R2、Windows 8.1)和 KB4338821(适用于 Windows Server 2008 R2、Windows 7)中得到解决
在我们的例子中,我们安装了修补程序 KB4345424(请参阅https://support.microsoft.com/en-us/help/4345424/improvements-and-fixes-windows-8-1-and-server-2012-r2 https://support.microsoft.com/en-us/help/4345424/improvements-and-fixes-windows-8-1-and-server-2012-r2),也可以从 Microsoft 获得,它解决了这个错误,据我们所知,这个问题不再存在。