线上项目CPU飙升排查流程

编写一段死循环程序,部署到linux服务器,以后台启动的方式启动,访问这段程序:

浏览器访问暴露出的请求接口:

观察Linux服务器cpu占用情况:

开始排查:

1.使用linux命令:top,查看cpu占用情况,降序排序:

得到进程:97101进程占用CPU使用率高

2.查看进程下线程占用情况:命令:top -p 进程id -H

3.使用jdk自带工具:jstack 打印进程堆栈信息:

jstack 97101【进程id】 > pid.log

  1. 刚刚查询到的进程下的线程占用率高的线程id,转换为16进制,然后到进程的堆栈信息日志表进行查询:

printf "%x" 97158 【线程id】

得到16进制数:17b86

  1. 打开刚刚生成的pid.log文件,查询 17b86 线程的堆栈信息:

查看到编写的项目文件,以及程序行号:

总结:使用linux命令top查询出占用cpu高的进程与线程信息,使用jdk自带的工具jstack生成进程堆栈信息,进行查找问题所在。

相关推荐
youliroam4 小时前
ESP32-S3+OV2640简单推流到GO服务
开发语言·后端·golang·esp32·ov2640
码luffyliu4 小时前
从 2 小时价格轮询任务通知丢失,拆解 Go Context 生命周期管控核心
后端·golang·go
TAEHENGV5 小时前
回收站模块 Cordova 与 OpenHarmony 混合开发实战
android·java·harmonyos
爱潜水的小L5 小时前
自学嵌入式day39,抓包
linux
a努力。5 小时前
宇树Java面试被问:方法区、元空间的区别和演进
java·后端·面试·宇树科技
2501_916766545 小时前
【面试题1】128陷阱、==和equals的区别
java·开发语言
码事漫谈5 小时前
二叉树中序遍历:递归与非递归实现详解
后端
码事漫谈5 小时前
跨越进程的对话之从管道到gRPC的通信技术演进
后端
lifewange5 小时前
测试场景 Linux 命令速查表
linux·运维·服务器
Vect__5 小时前
进程控制详解
linux·驱动开发