端口冲突问题如何定位和解决

端口冲突问题,其实就是两个程序同时想占用同一个端口,结果后启动的那个bind 失败。Java应用如果端口冲突会在启动时报错:BindException:Address alreadyin use Nginx/Redis/MySQL 等会直接提示 port already in use。会导致服务启动失败。

如果发现冲突了,首先看下这个端口别谁用了,比如8080端口冲突了,可以用以下方式查看。

#方法 1:lsoflsof -i:8080

#方法 2:netstat

netstat -tulnp | grep 8080

#方法 3:ss

ss -tulnp | grep 8080

输出结果会告诉你哪个进程在占用这个端口。

定位到冲突之后,想要解决冲突有两个办法:

1、杀掉占用端口的那个进程

•如kill,或者kill-9

2、修改端口号重新启动

•Java Spring Boot通过配置项可以修改端口号server.port=9090

• 改端口要注意:

。避免 0-1023(需要root权限的知名端口)。建议使用1024-49151之内的端口号

。49152-65535 是动态端口(系统临时分配,避免长期监听用它)