windows端口被占用,无法通过netstat找到进程,占用的端口又不能修改,该怎么办?

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 项目运行时服务器8080端口被占用,常规`netstat`命令找不到占用进程。解决方法包括:1) 强制关机重启释放端口;2) 使用`netstat -anobq`或Windows 10的`Get-NetTCPConnection` PowerShell命令查找BOUND状态的进程;3) 调整Windows动态端口范围,避免冲突。注意,强制关机可能影响数据安全。

最近遇到一个奇葩的问题,项目跑的好好的,没有安装其它特殊软件,突然服务器启动报错,日志如下,显然是服务器的8080端口占用了。

Caused by: java.net.BindException: Address already in use: bind
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:438)
        at sun.nio.ch.Net.bind(Net.java:430)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:225)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:218)
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:194)
        at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1328)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1341)
        at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:241)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:695)
        at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11

很多同学容易想到的常规解决方法(windows上)就是使用如下命令找到对应的pid,然后进行关闭

netstat -ano | findstr :8080

但是我这边用这个命令每次的结果都是空白的,也就是无法找到占用8080端口的进程。

那么windows端口占用,netstat无法找到,我们一般可以有哪些简单和行之有效的解决方法呢?

方法1 强制关机

!!!就是按住电源键5秒以上,系统断电。
有同学问为啥正常关机不就好了吗?实际上也是经验所得,正常关机有些进程会缓存下来,占用的端口也会在重启后立马就重新占用。但是强制关机所有的进程及程序缓存都会失效。

方法2 netstat 并使用windows10新增参数-q

通过查阅官网资料,从windows10开始,新增了一个-Q的参数能够查询出一种BOUND状态下的进程,笔者无法找到的进程就是这种状态的。
同时官网也推荐了使用powershell的Get-NetTCPConnection命令来找到对应的程序进程。

使用示例:
netstat -anobq | findstr :8080


官网资料:
Netstat has been updated in Windows 10 with the addition of the -Q switch to show ports that have transitioned out of time wait as in the BOUND state. An update for Windows 8.1 and Windows Server 2012 R2 has been released that contains this functionality. The PowerShell cmdlet Get-NetTCPConnection in Windows 10 also shows these BOUND ports.

Until 10/2016, netstat was inaccurate. Fixes for netstat, back-ported to 2012 R2, allowed Netstat.exe and Get-NetTcpConnection to correctly report TCP or UDP port usage in Windows Server 2012 R2. See Windows Server 2012 R2: Ephemeral ports hotfixes to learn more.

方法3 修改windows动态端口范围

有一些更新可能会使可使用端口的范围有变化,比如Hyper-v
可使用如下命令更新保留端口范围,保留端口范围应该包含你使用端口

netsh interface ipv4 show excludedportrange protocol=tcp

net stop winnat

net stop LanmanWorkstation

net stop WlanSvc

net stop WwanSvc

netsh int ipv4 add excludedportrange protocol=tcp startport=8080 numberofports=1

net start winnat

net start LanmanWorkstation

net start WlanSvc

net start WwanSvc

使用如下命令更新动态端口范围,该范围应该在你使用的端口范围外

netsh int ipv6 show dynamic tcp
netsh int ipv4 set dynamic tcp start=9001 num=16384
目录
相关文章
|
1月前
|
Linux 虚拟化 Windows
Linux、Windows上还不会端口映射的网工,请低调看过来!
Linux、Windows上还不会端口映射的网工,请低调看过来!
|
29天前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
133 2
|
1月前
|
网络协议
Mac根据端口查询进程id的命令
这篇文章介绍了在Mac操作系统上如何使用两种命令来查询监听特定端口的进程ID。第一种方法是使用`netstat -anp tcp -v | grep 端口号`,例如`netstat -anp tcp -v | grep 80`,这将列出所有使用端口80的TCP连接及其相关信息。第二种方法是使用`lsof -P -n -i:端口号`,例如`lsof -P -n -i:8080`,这将显示使用指定端口的进程列表,包括进程ID、用户、文件描述符等信息。文章通过示例展示了如何使用这些命令,并提供了输出结果的截图。
61 2
|
1月前
|
Windows
Windows中如何查看被占用的端口、杀掉对应的进程
这篇文章介绍了在Windows系统中如何查看被占用的端口号以及如何杀掉占用端口的进程,包括使用命令提示符的`netstat -ano | findstr 端口号`命令查找进程PID,然后通过任务管理器或`taskkill /PID PID号`命令来结束进程。
Windows中如何查看被占用的端口、杀掉对应的进程
|
1月前
|
Kubernetes 网络协议 网络安全
在K8S中,如果不能在容器内部使用netstat查看端口号的情况下,还有其他方式吗?
在K8S中,如果不能在容器内部使用netstat查看端口号的情况下,还有其他方式吗?
|
1月前
|
Windows
Windows——80端口被系统占用
Windows——80端口被系统占用
40 0
|
1月前
|
Linux Windows
Windows查找监听端口对应的进程及其路径
Windows查找监听端口对应的进程及其路径
|
2月前
|
运维 Python Windows
如何通过Python脚本查找并终止占用指定端口的进程
在日常的开发和运维过程中,某些端口被意外占用是一个常见的问题。这种情况可能导致服务无法启动或冲突。本文将介绍如何通过Python脚本查找并终止占用指定端口的进程,以确保系统的正常运行。
|
2月前
|
Java Shell
通过端口杀掉进程的脚本
通过端口杀掉进程的脚本
24 0
|
Web App开发 关系型数据库 Windows