Win10断网系列问题2:Socket端口用尽
报错:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
通常情况:浏览器报错,QQ可用
解决方案:
最简单:重启计算机
注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
MaxUserPort项:最大用户端口,Win10默认15000(默认1024开始,管理员netsh int ipv4 show dynamicport tcp查看),可以改大,最高65535
注意:不应改很大,需要预留其他软件固定端口
TcpTimedWaitDelay项(DWORD10进制):修改为30(降低Time Wait时间,最低为30秒)
造成原因:程序使用Socket后未释放,造成死亡端口
使用MS提供的TcpView可以粗略判断该问题
(按端口排序,程序使用端口应当是连续的,如果中间有跳号,一般是有问题了,正常释放的端口会在此轮到上限后从开始值被重复利用)
https://docs.microsoft.com/zh-cn/sysinternals/downloads/tcpview
https://ekuai.lanzous.com/iPWhKe18ilc
可能原因排查:SmartDNS配置了无法连接的国外DNS,造成频繁连接,频繁死链,删除GoogleDNS和CloudFlareDNS有所好转