问题背景
在 Windows 上启动 nacos 出现 8848 端口占用的问题。但是使用 netstat -aon | findstr "8848"
却查不到占用端口的 pid
问题原因
Windows 中有一个『TCP 动态端口范围』,处在这个范围内的端口,有时候会被一些服务占用。 例如,如果安装了 Hyper-V,那么 Hyper-V 会为容器宿主网络服务(Windows Container Host Networking Service)随机保留一些端口号使用,这些端口则来自于刚才提到的『TCP 动态端口范围』
- 使用命令
netsh int ipv4 show dynamicport tcp
可以查看目前的 TCP 动态端口范围 - 使用命令
netsh int ipv4 show excludedportrange protocol=tcp
可以查看当前已被征用的了的端口
问题解决
手动设置『TCP 动态端口范围』- 需要管理员权限
netsh int ipv4 set dynamic tcp start=49152 num=16384
netsh int ipv6 set dynamic tcp start=49152 num=16384
设置从『TCP 动态端口范围』中排除的端口
netsh int ipv4 add excludedportrange protocol=tcp startport=要排除的端口 numberofports=范围