博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
超出TCP连接端口数限制(MaxUserPort)引起的服务器问题
阅读量:6657 次
发布时间:2019-06-25

本文共 895 字,大约阅读时间需要 2 分钟。

昨天2台Windows Server 2012服务器出现奇怪的问题,自己竟然连不上自己的本机80端口,telnet 127.0.0.1 80也连不上,而更奇怪的是其它服务器可以连接到这2台服务器的80端口。在这2台服务器上,浏览器打不开任何网站,但能ping通。重启其中1台服务器后,被重启的服务器恢复正常。

服务器用的是阿里云的,开始以为是阿里云的问题,向阿里云提交了工单。在提交了 netstat -nat 的信息后,阿里云工程师很快定位出问题原因,是TCP MaxUserPort不够用引起的,当时TCP连接的端口数是6000多,而Windows的默认最大TCP连接端口数(MaxUserPort)是5000。

知道这个原因后,上那台还在故障中的服务器,用netstat -n | find /C /I "established"一看,果然超过了5000(如果用PowerShell,可以用命令Get-Counter -Counter \TCPv4\*查看)。

从这个原因出发,所有的故障现象都有了合理的解释:

  • 连不上自己的本机80端口:连接本机80端口,也需要客户端TCP端口,没端口可用当然连不上;
  • 其它服务器可以连接到这2台服务器的80端口:其它服务器只是连接这2台服务器已有的80端口,不需要额外的端口;
  • 浏览器打不开任何网站:浏览器访问网站,建立TCP连接需要分配客户端TCP端口;
  • 能ping通:ping走的是ICMP协议,不够用的是TCP协议的端口,所以不受影响;
  • 重启后恢复正常:占用的TCP端口被重置,重新分配,还未达到5000的限制。

知道了真正原因,解决起来就很简单,修改最大TCP连接端口数(MaxUserPort)限制,修改方法:在注册表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中添加名为MaxUserPort,类型为DWORD(32-bit),值为65543(10进制)的项目并重启计算机。

转载于:https://www.cnblogs.com/dudu/p/5237777.html

你可能感兴趣的文章
leetcode 264. Ugly Number II
查看>>
如何创建Hiren的BootCD USB磁盘 -- 制作U盘启动盘
查看>>
lubuntu自动登录(lxde)
查看>>
Python--day39--管道和数据共享(面试可能会问到)
查看>>
第十二章 Python网络编程
查看>>
Caffe错误汇总与解决办法
查看>>
1079. Total Sales of Supply Chain (25)
查看>>
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
查看>>
Oracle数据库中的左连接与右连接
查看>>
POJ-1742 Coins
查看>>
segmentController
查看>>
淘宝初始化代码 - 解决浏览器的兼容问题
查看>>
在win8 64位操作系统下Power Designer 16.5对MySQL5.6逆向工程的配置详解
查看>>
07.Javascript——入门高阶函数
查看>>
LeetCode – Refresh – Remove Duplicates from Sorted Array
查看>>
centos 7 中没有iptables 和service iptables save 指令使用失败问题解决方案
查看>>
R语言数据可视化1—ggplot2画柱状图
查看>>
Ubuntu安装微信开发者工具
查看>>
Windows 7 MVC2.0部署到IIS7【原创】
查看>>
C#属性和成员变量的区别?
查看>>