线上CPU100%的问题处理

上次出现线上CPU100%的情况是论坛发帖一个正则表达式引起的,当时各项目耦合比较紧密,导致大量网站瘫痪。多次重启问题依然存在。后来通过查看代码以及运维操作解决的该问题。记录一下基本的排查过程,帮助以后能快速解决该类问题。

1. 查看cpu和内存的使用情况

top

image.png

2.找到进程中的占cpu最高和最耗时的线程

ps -mp -pid -o Thread,tid,time

image.png

3. 将TID转换为16进制

printf "%x\n" tid

image.png

4.使用jstack 命令找到线程堆栈信息

[root@VM_0_17_centos ~]# jstack 26427 |grep 673d -A 30

image.png

注:上图中的tid指java线程id,nid指native线程id。

总结:

1、top命令:Linux命令。可以查看实时的CPU使用情况。也可以查看最近一段时间的CPU使用情况。
2、PS命令:Linux命令。强大的进程状态监控命令。可以查看进程以及进程中线程的当前CPU使用情况。属于当前状态的采样数据。
3、jstack:Java提供的命令。可以查看某个进程的当前线程栈运行情况。根据这个命令的输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及是否死锁等等。
4、pstack:Linux命令。可以查看某个进程的当前线程栈运行情况。

参考:https://www.cnblogs.com/lishijia/p/5549980.html

你可能感兴趣的:(线上CPU100%的问题处理)