服务器突然无法建立新连接;似乎是短暂的端口耗尽

服务器突然无法建立新连接;似乎是短暂的端口耗尽

我们拥有多台 Windows 2008R2 服务器,运行各种商业(例如 SQL Server)和内部应用程序。这些服务器包括各种虚拟和物理服务器,它们都已运行多年,没有出现任何问题。

然而,在过去几周里,一些服务器突然无法建立新的网络连接。例如,我们的一个应用程序通过普通套接字连接连接到 SQL - 它只是挂起了。尝试浏览网络共享受影响的服务器告诉我们

超出本地计算机网络适配卡的名称限制

在我看来,这就像老式的临时端口耗尽,增加临时端口的数量可以暂时解决问题

在此处输入图片描述

然而,即使安装了这个,服务器也只能撑几天,然后问题又会再次出现。此外,我看不出是什么占用了大量的端口——再次强调,没有什么已在服务器上发生改变,并且问题已在运行不同类型应用程序的 4 个不同机器上发生。

如果我查看运行 SQL Server 2014 的最繁忙的服务器,在 TCPView 中我们会显示大约 1000 个连接:

在此处输入图片描述

我已经跑了这个脚本它记录短暂的端口使用情况,并且永远不会超过几十个端口。

Process Explorer 也没有显示任何令人兴奋的内容:

在此处输入图片描述

我的直觉是,7 月份的“补丁星期二”中的某些内容导致了此问题,但我可能完全错了。我们所知道的是,以前正常工作的服务器现在在几天后停止工作,所有东西都已打上最新补丁(无论是 Microsoft 还是供应商驱动程序),它影响了多台服务器,包括物理服务器和虚拟服务器,并且没有迹象表明有任何东西通过临时端口烧毁。有人能建议如何隔离导致问题的原因吗?

答案1

听起来你对 7 月更新是问题根源的怀疑是有道理的。尝试从受影响的服务器之一卸载 2017 年 7 月 11 日汇总。如果问题消失,考虑联系 MS 支持?不过,这是一个“已知问题”,可能没有什么用……

此更新中的已知问题KB4025341

症状:由于 WLDAP32.DLL 存在缺陷,执行 LDAP 引用追踪的应用程序可能会消耗过多的动态 TCP 端口(可能会耗尽这些端口)

解决方法:要解决此问题,请重新启动执行 LDAP 引用追踪的服务或应用程序以释放 TCP 动态端口。

答案2

提到的脚本这里可能有助于诊断哪个进程正在使用端口。基本上,它将的输出netsh int ipv4 show dynamicportrange tcp与结合起来netstat –ano –p tcp以帮助诊断。文本还提到这仅用于查找用户模式进程中的问题,解释了如何使用 WinDBG 来诊断内核模式进程中的问题。

此主题还提到事件 4231 是该问题的另一个指标。

答案3

这是一个有趣的问题。引起了我的注意,因为之前我遇到了与 Windows 服务器打开多个 TCP 连接的问题。您是否记录了 CPU、网络吞吐量并注意到任何异常?

假设您正在进行事后分析,您可能检查过日志,但并未发现任何异常。流量是否在增加?任何可以解释错误增加的原因。这 4 个盒子是否位于同一子网?由不同的应用程序访问?

其他要考虑的事项是共享连接。创建任何共享时,临时端口的扩展范围是否打开?

TCP TCB 连接。我认为在 2k8 R2 上是 2000。再检查一下。祝你好运。

相关内容