避免 TCP/IP 端口耗尽
2011-06-27 11:45
197 查看
当客户端启动到服务器的 TCP/IP 套接字连接时,客户端通常连接到服务器上的特定端口,并请求服务器通过临时(或暂时)TCP 或 UDP 端口进行响应。在 Windows Server 2003 和 Windows XP 中,客户端应用程序所使用的临时端口的默认范围为 1025 到 5000。在某些情况下,有可能耗尽默认范围的可用端口。
TCP/IP 端口耗尽的症状随客户端应用程序的不同而不同,但通常都表现为显示网络连接失败错误。若要确定网络连接失败是否是由 TCP/IP 端口耗尽造成的,请在客户端计算机上执行以下步骤:
在运行 Windows XP 或 Windows Server 2003 的计算机上单击“开始”,再单击“运行”,然后键入 cmd,单击“确定”打开命令提示。执行以下操作之一:
在 Windows XP 或 Windows Server 2003 计算机上的命令提示中输入以下命令,显示此计算机上 TCP/IP 协议所使用的活动连接:netstat -n 这将列出绑定到客户端计算机的 TCP/IP 地址以及 TCP/IP 地址与远程服务器通信所使用的端口。如果列出的端口使用了所有可用的端口,则出现了 TCP/IP 端口耗尽现象。
在基于 Windows Server 2003 的客户端计算机的命令提示中输入以下命令,以显示 TCP/IP 协议所使用的活动连接:netstat -b 这将列出绑定到客户端计算机的 TCP/IP 地址、TCP/IP 地址与远程服务器通信所使用的端口以及使用这些端口的应用程序。此信息可以帮助您确定那个客户端应用程序正在使用过多的 TCP/IP 端口。
与 TCP/IP 端口耗尽有关的问题
当客户端应用程序尝试使用 TCP/IP 套接字连接到 BizTalk Server,或当 BizTalk 应用程序尝试使用 TCP/IP 套接字连接到服务器时,可能会出现类似于下面的情况:
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send.Unable to connect to the remote server.
System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted.
当出现这些错误时,还可能出现以下问题:
客户端应用程序可能无法连接到 BizTalk Server。
BizTalk 应用程序服务可能无法连接到远程 SQL 服务器。
BizTalk Server 适配器可能无法连接到远程服务器。
原因
如果客户端计算机中存在数目超常的 TCIP/IP 套接字连接,则客户端计算机上可能出现 TCP/IP 端口耗尽的情况。当 TCP/IP 端口耗尽时,将无法预留客户端端口,并且尝试通过 TCP/IP 套接字连接到服务器的客户端应用程序也将出错。
客户端应用程序预留的每个端口均占用内核内存。如果预留了数目超常的客户端端口,Windows 内核内存的占用率将相应增加。
解决方法
如果大量客户端应用程序要启动已知数量的 TCP/IP 套接字连接,但没有足够数量的可用临时端口来满足连接请求,则需要进行以下注册表修改。
增加动态分配到客户端 TCP/IP 套接字连接的临时端口的上限。
启动注册表编辑器。
在注册表中,浏览到并单击注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters。
在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加注册表值,以增加可以动态分配到客户端的临时端口的数量:
值名称 MaxUserPort
值数据 <在此输入一个 5000 到 65534 之间的十进制值>
关闭注册表编辑器。
注意:必须重新启动计算机,此更改才会生效。增加用于客户端 TCP/IP 连接的临时端口的范围将占用 Windows 内核内存。请勿将此设置的值增加至超过容纳客户端应用程序套接字连接所需要的值,以便尽可能降低对 Windows 内核内存的不必要占用。
TCP/IP 端口耗尽的症状随客户端应用程序的不同而不同,但通常都表现为显示网络连接失败错误。若要确定网络连接失败是否是由 TCP/IP 端口耗尽造成的,请在客户端计算机上执行以下步骤:
在运行 Windows XP 或 Windows Server 2003 的计算机上单击“开始”,再单击“运行”,然后键入 cmd,单击“确定”打开命令提示。执行以下操作之一:
在 Windows XP 或 Windows Server 2003 计算机上的命令提示中输入以下命令,显示此计算机上 TCP/IP 协议所使用的活动连接:netstat -n 这将列出绑定到客户端计算机的 TCP/IP 地址以及 TCP/IP 地址与远程服务器通信所使用的端口。如果列出的端口使用了所有可用的端口,则出现了 TCP/IP 端口耗尽现象。
在基于 Windows Server 2003 的客户端计算机的命令提示中输入以下命令,以显示 TCP/IP 协议所使用的活动连接:netstat -b 这将列出绑定到客户端计算机的 TCP/IP 地址、TCP/IP 地址与远程服务器通信所使用的端口以及使用这些端口的应用程序。此信息可以帮助您确定那个客户端应用程序正在使用过多的 TCP/IP 端口。
与 TCP/IP 端口耗尽有关的问题
当客户端应用程序尝试使用 TCP/IP 套接字连接到 BizTalk Server,或当 BizTalk 应用程序尝试使用 TCP/IP 套接字连接到服务器时,可能会出现类似于下面的情况:
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send.Unable to connect to the remote server.
System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted.
当出现这些错误时,还可能出现以下问题:
客户端应用程序可能无法连接到 BizTalk Server。
BizTalk 应用程序服务可能无法连接到远程 SQL 服务器。
BizTalk Server 适配器可能无法连接到远程服务器。
原因
如果客户端计算机中存在数目超常的 TCIP/IP 套接字连接,则客户端计算机上可能出现 TCP/IP 端口耗尽的情况。当 TCP/IP 端口耗尽时,将无法预留客户端端口,并且尝试通过 TCP/IP 套接字连接到服务器的客户端应用程序也将出错。
客户端应用程序预留的每个端口均占用内核内存。如果预留了数目超常的客户端端口,Windows 内核内存的占用率将相应增加。
解决方法
如果大量客户端应用程序要启动已知数量的 TCP/IP 套接字连接,但没有足够数量的可用临时端口来满足连接请求,则需要进行以下注册表修改。
增加动态分配到客户端 TCP/IP 套接字连接的临时端口的上限。
启动注册表编辑器。
在注册表中,浏览到并单击注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters。
在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加注册表值,以增加可以动态分配到客户端的临时端口的数量:
值名称 MaxUserPort
值数据 <在此输入一个 5000 到 65534 之间的十进制值>
关闭注册表编辑器。
注意:必须重新启动计算机,此更改才会生效。增加用于客户端 TCP/IP 连接的临时端口的范围将占用 Windows 内核内存。请勿将此设置的值增加至超过容纳客户端应用程序套接字连接所需要的值,以便尽可能降低对 Windows 内核内存的不必要占用。
相关文章推荐
- 避免 TCP/IP 端口耗尽
- 避免 TCP/IP 端口耗尽
- TCP/IP 端口耗尽 之去尼玛的***
- Tcp/IP 端口耗尽
- Tcp/IP 端口耗尽
- (转载)Tcp/IP 端口耗尽
- TCP/IP 常用端口笔记
- python: tcp/ip学习、端口、udp和tcp的应用
- tcp/ip客户端临时端口
- Windows TCP/IP 临时、保留和封锁端口行为
- --------监视你的 TCP/IP端口!!!(vb)-----------
- Web Service (006---使用eclipse端口拦截器[TCP/IP Monitor]监视WebService请求)
- Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败
- 通过端口1433连接到主机127.0.0.1的 TCP/IP 连接失败,错误:“connect timed out”的解决方法
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性,并检查 SQL Server 的实例正在
- 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败。错误:“connect timed out解决
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“connect timed out。请验证连接属性。确保 SQL Server 的实例正在主机上运行,且在此端口
- Windows TCP/IP 临时、保留和封锁端口行为
- 预留端口避免占用ip_local_reserved_ports
- 在 Windows Vista 和 Windows Server 2008 中,TCP/IP 的默认动态端口范围已更改