我们在启动网站时,经常会遇到端口占用的问题。例如我在使用443端口启动我的springboot搭建的网站时就遇到如下报错:
Description:
The Tomcat connector configured to listen on port 443 failed to start. The port may already be in use or the connector may be misconfigured.
接下来介绍一下我的解决方法:
1、找到占用对应端口的进程号(PID)
打开cmd窗口,使用netstat
命令来查看网络连接状态。如下所示,执行:
netstat -a | findstr 443
可以看到:
TCP 0.0.0.0:443 account:0 LISTENING 2660
其中各个字段的含义如下所示:
协议 | 本地地址:端口 | 外部地址 | 状态 | PID |
---|---|---|---|---|
TCP | 0.0.0.0:443 | account:0 | LISTENING | 2660 |
2、根据进程号(PID)找到对应占用端口的进程
在cmd窗口中继续执行tasklist
命令,查看当前执行的进程和对应的端口号:
tasklist | findstr 2660
可以看到:
VisualSVNServer.exe 2660 Services 0 20 K
其中各个字段的含义如下所示:
映像(程序)名称 | PID | 会话名 | 会话# | 内存使用 |
---|---|---|---|---|
VisualSVNServer.exe | 2660 | Services | 0 | 20 K |
3、关闭占用端口的进程,重启网站服务
从第2步中可以看出来,VisualSVNServer
程序占用了我的443端口,导致我的网站无法运行。这个是我进行SVN版本控制的程序,此时需要把他关闭掉。我们可以使用taskkill
命令来完成,也可以使用Ctrl+Shift+Esc
打开任务管理器选中直接关闭。我这里使用taskkill
进行演示。执行如下命令:
taskkill /PID 2660
此时端口占用已经解决,直接重启自己的服务器就可以了。
4、附录
netstat
命令很常用,我们可以借此机会了解一下他的其他参数,以及对应的功能
F:\Coder\SpringStudy>netstat /?
显示协议统计信息和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]
-a 显示所有连接和侦听端口。
-b 显示在创建每个连接或侦听端口时涉及的
可执行程序。在某些情况下,已知可执行程序承载
多个独立的组件,这些情况下,
显示创建连接或侦听端口时
涉及的组件序列。在此情况下,可执行程序的
名称位于底部 [] 中,它调用的组件位于顶部,
直至达到 TCP/IP。注意,此选项
可能很耗时,并且在你没有足够
权限时可能失败。
-e 显示以太网统计信息。此选项可以与 -s 选项
结合使用。
-f 显示外部地址的完全限定
域名(FQDN)。
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-p proto 显示 proto 指定的协议的连接;proto
可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s
选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-q 显示所有连接、侦听端口和绑定的
非侦听 TCP 端口。绑定的非侦听端口
不一定与活动连接相关联。
-r 显示路由表。
-s 显示每个协议的统计信息。默认情况下,
显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
-p 选项可用于指定默认的子网。
-t 显示当前连接卸载状态。
-x 显示 NetworkDirect 连接、侦听器和共享
终结点。
-y 显示所有连接的 TCP 连接模板。
无法与其他选项结合使用。
interval 重新显示选定的统计信息,各个显示间暂停的
间隔秒数。按 CTRL+C 停止重新显示
统计信息。如果省略,则 netstat 将打印当前的
配置信息一次。