Linux、Windows下查看端口占用情况、CPU飙高排查

 一、linux下查看端口号被什么进程占用

linux下输入命令 netstat -tunlp | grep 8089,其中 8089 为被占用的端口号

-t (tcp) 仅显示tcp相关选项 

-u (udp) 仅显示udp相关选项

-n 拒绝显示列名,能显示数字的全部转化为数字

-l 仅显示出在listen(监听)的服务状态

-p 显示 PID/Program 名称

得到如下信息:
[root@centos7 bin]# netstat -tunlp | grep 8089
tcp6       0      0 :::8089                 :::*                    LISTEN      670/java

从以上信息看出,占用了 8089 端口的进程号为 pid = 670,且是一个java进程

二、windows下查看端口号被什么进程占用

 打开cmd窗口,输入 netstat -ano | findstr 8080, 其中 8080 为被占用的端口号

-a 显示所有连接和侦听端口

-n 以数字形式显示地址和端口号

-o 显示拥有的与每个连接关联的进程 ID

得到如下信息:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 28916
TCP 172.20.13.83:52790 180.101.245.13:8080 ESTABLISHED 35200
TCP 172.20.13.83:52820 117.62.243.156:8080 ESTABLISHED 26436
TCP 172.20.13.83:59370 42.187.184.154:8080 TIME_WAIT 0
TCP 172.20.13.83:59383 180.109.192.140:8080 ESTABLISHED 26436
TCP [::]:8080 [::]:0 LISTENING 28916

从以上信息看出,占用了 8080 端口的进程号为 pid = 28916

使用 tasklist 命令查看 pid 对应的进程名称,例如 tasklist | findstr 28916,得到如下信息:

java.exe                     28916 Console                    1    185,684 K

从以上信息看出,java.exe 进程占用了端口号 8080。

三、查看CPU飙高情况

windows:

(工具下载地址 https://learn.microsoft.com/zh-cn/sysinternals/downloads/process-explorer):
1、使用工具ProcessExplorer查找到对应的线程号 tid,并将线程号转成16进制记录下来第三步要用(在线转换进制 https://www.sojson.com/hexconvert/10to16.html)
2、使用命令 jstack pid > info.txt 将堆栈线程信息打印出来(pid可以使用jps命令查看)
3、在info.txt文件中搜索第一步得到的线程号(16进制),查看具体是哪个方法消耗cpu

linux:

1、输入top -H 记下cpu高的线程ID(就是显示出来的PID),转成十六进制记录下来第三步要用(命令 printf %x PID)
2、jstack pid > info.txt (这里的 pid指的是java进程号,可以使用jps查看java进程号,不是指第一步查出来的线程号)
3、在info.txt文件中搜索第一步得到的线程号(16进制),查看具体是哪个方法消耗cpu

posted on 2022-08-11 11:02  老酒馆  阅读(734)  评论(0编辑  收藏  举报

导航