微服务启动-端口already exist

发布时间 2023-12-21 12:37:33作者: 林同学的博客

微服务项目启动eureka成功,port:8761,再次启动其他服务都报错:8761端口已经already exist,如何解决?明明各自服务在其各自的application.yaml文件都配置了端口号port,不应该有冲突诶。

在确定自己没有编写错误的前提下,不断重启就行了!!!

下面看情况去测试,主要是我没搞清楚问题来源。

搜了好多文章,挨个试了试,可以试试,看哪个对你有用。

1、打开任务管理器,把这些任务结束掉,再试试。

2、cmd打开命令行,输入命令netstat -aon|findstr "被占用的端口号",查出来PID下的编号为正在执行的程序,可以拿着编号去任务管理器查具体是哪个程序在允许,我这边一查是正在允许的eureka,执行命令结束进程,具体命令参考如下:

强制(/F参数)杀死 pid 为 9088 的所有进程包括子进程(/T参数):

taskkill /T /F /PID 9088 

然而,这个对我没有用,重启还是8761端口已存在。

3、一些编写出错:

检查各个服务生成的.iml文件是否引用错了,发现有博主说是直接复制的,会导致启动项目时去扫描其他服务。

application.yaml配置端口时,server: port: 8762 注意冒号后面是否有空格。

这个问题我觉得是很少的,几乎没有!

4、有博主说是在当前服务引用了其他服务作为依赖,也就是热部署时引入的服务发生了端口冲突,这个对我也没有用。

5、最后,在配置启动各服务时写明端口号就成功了,具体操作如下:

点击“Edit Configuration...”

进去之后,点击每个服务,点击modify options,勾选“Program arguments",然后“Build and run”下面就多出来一下,填写端口配置”--server.port=8764“,点击右下角Apply即可。

重新运行,我这边就可以了,你们可以试一试。

插曲:刚编辑完这篇文章,想着场景再现一下,干掉了eureka,在运行直接报错service-url也就是defaultZone下面注册中心找不到,我配置文件都没有改,又查询试了试上面的各个步骤,还是不行,没有用,最后还是多次重启,应该是一直有缓存吧。