1.使用top命令查看CPU占用
命令:top (top -c)
pid为5896 CPU占用经常在200%以上
2.查看进程对应的工程
命令:ps -aux|grep [pid]
我们这里每个项目都是 tomcat+工程名+端口号命名。通过这一条找到我们的进程所在工程为production
3.查看占用高的线程
命令:ps -mp [pid] -o THREAD,tid,time | sort -rn
4.将需要的线程ID转换为16进制格式
命令:printf "%x\n" tid
5.查看线程堆栈
命令:jstack [pid] |grep [0xtid] -A 30
或者直接用命令导出整个进程的堆栈
jstack 5896>>5896.log
6.查看堆栈结果
在log中搜索 0x7c55和0x4159如下
两条都为python相关的调用
接下来就可以进行具体分析了
根据线程time推算大概是2018年11月29日的调用,服务器的线程时间指CPU时间,不一定和标准时间相同。
后续就是对这段时间的接口调用就行调查了。把问题代码改完后重启tomcat进程看有无问题。