我目前正在调查一个问题,我们怀疑过多的传出连接导致端口耗尽是一个因素。我希望能够确定服务器何时达到或接近端口耗尽,似乎应该有一些 wmi 计数器可以指示这一点,尽管我不知道是哪一个
提前致谢。
答案1
要获取当前活动的连接数,您可以使用 Powershell:
$a=gwmi -class Win32_PerfFormattedData_Tcpip_TCPv4 |select ConnectionsEstablished
$a.ConnectionsEstablished
请注意,同一个类中还有一个 ConnectionsActive,它显示累积连接数而不是当前连接数。以下是课程参考。
详情这篇 MSDN 博客文章当客户端端口耗尽成为威胁时,您可以使用两种系统调整来提高系统容忍度:
[开始报价]
增加动态分配给客户端 TCP/IP 套接字连接的临时端口的上限范围。
- 启动注册表编辑器。
浏览到注册表中的以下项,然后单击该项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
在
Edit
菜单上,单击New
、DWORD Value
,然后添加以下注册表值以增加可动态分配给客户端的临时端口数量:
值名称 MaxUserPort
值数据 <Enter a decimal value between 5000 and 65534 here>
您必须重新启动计算机才能使此更改生效。增加用于客户端 TCP/IP 连接的临时端口范围会消耗 Windows 内核内存。请勿将此设置的上限值增加到高于容纳客户端应用程序套接字连接所需的值,以尽量减少对 Windows 内核内存的不必要消耗。
将客户端 TCP/IP 套接字连接超时值从默认值 240 秒减少
浏览到注册表中的以下项,然后单击该项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
在
Edit
菜单上,单击New
、 ,然后添加以下注册表值以减少连接关闭时DWORD Value
保持该状态的时间长度。当连接处于该状态时,套接字对不能被重用:TIME_WAIT
TIME_WAIT
值名称 TcpTimedWaitDelay
值数据 <Enter a decimal value between 30 and 240 here>
您必须重新启动计算机才能使此更改生效。此值的有效范围是 30 到 300(十进制)。默认值为 240。
[结束引用]