nacos启动后过一会自动关闭,端口被占用但是查不出使用进程

69 阅读2分钟

window系统下成功配置单机模式后

image.png

可以启动

image.png

但是过一会或者访问locahost:8848自动关闭 我们打开nacos/logs文件夹,把log全部删掉再开启一遍,注意不是bin里的log

image.png

拉到最下面

image.png

image.png

意思就是端口被占用了,Nacos2.0版本新增了gRPC通讯方式,还需要两个端口 9849 和 9849 查看端口占用

# windows
netstat -ano | findstr 8848
netstat -ano | findstr 9848
netstat -ano | findstr 9849
# linux
netstat -tunlp | grep 8848
netstat -tunlp | grep 9848
netstat -tunlp | grep 9849

查看是什么进程占用

# windows 命令
tasklist | findstr 14548 
# 如果是Linux部署请使用下面这个命令
ps -ef | grep 14548 

杀掉进程

# windows 命令
taskkill /F /PID 14548 /T
# Linux 命令
kill -9 [pid]

如果你安装了Hyper-v或者WSL2,很不幸什么都查不出来,Widows 默认把某些端口范围分给了他们,所以没有进程占用但nacos或者springboot启动都显示端口被占用

image.png

查看动态端口的端口范围,这是一个待选择范围,并不代表其中的所有端口都会被保留

# tcp
netsh int ipv4 show dynamicportrange protocol=tcp
# udp
netsh int ipv4 show dynamicportrange protocol=udp

image.png

查看保留端口范围,即当前所有已经被征用了的端口

# tcp
netsh interface ipv4 show excludedportrange protocol=tcp
# udp
netsh interface ipv4 show excludedportrange protocol=udp
# linux
sudo iptables -L --line-numbers -t filter -p tcp

可以看到9848和9849在保留端口范围内

image.png

可以选择关闭hyper-v设置-》应用-》开启或关闭windows功能-》取消hyper-v选项,显然装hyper-v大概率是需要用docker,我们可以排除需要的端口或者修改TCP 动态端口范围

此操作需要管理员权限 win+r->cmd->Ctrl+Shift+Enter

排除端口

# windows
netsh int ipv4 add excludedportrange protocol=tcp startport=要排除的端口 numberofports=范围
即
netsh int ipv4 add excludedportrange protocol=tcp startport=8848 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=9848 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=9849 numberofports=1
# linux
sudo iptables -A INPUT -p tcp --dport 8848:9849 -j DROP

或者设置保留端口范围

# ipv4
netsh int ipv4 set dynamic tcp start=10000 num=13977
# ipv6
netsh int ipv6 set dynamic tcp start=10000 num=13977

重置

# windows
netsh int ip reset
# linux
sudo systemctl restart network

此时查看tcp动态端口范围

image.png 重启!