• 超出TCP连接端口数限制(MaxUserPort)引起的服务器问题


    昨天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)限制,修改方法:在注册表HKLMSYSTEMCurrentControlSetServicesTcpipParameters中添加名为MaxUserPort,类型为DWORD(32-bit),值为65543(10进制)的项目并重启计算机。

  • 相关阅读:
    hdu 1542 Atlantis
    cf C. Cupboard and Balloons
    cf C. Tourist Problem
    hdu 4027 Can you answer these queries?
    hdu 1255 覆盖的面积
    hdu 1698 Just a Hook
    zoj 1610 Count the Colors
    hdu 4302 Holedox Eating
    hdu 4288 Coder
    tsne理论学习
  • 原文地址:https://www.cnblogs.com/dudu/p/5237777.html
Copyright © 2020-2023  润新知