根据CPU消耗定位问题代码

查看进程id,线程id;下面这条命令可以得出哪个线程对应哪个进程
ps -eo pid,lwp -L
e:显示所有的进程
o:自定义显示
f:全格式
h:不显示标题
l:长格式
w:宽输出
a:显示终端上的所有进程,包括其他用户的进程
u:有效用户
r:只显示正在运行的进程
x:显示没有控制终端的进程

pid:进程id
lwp:线程id
ruser:用户id
ppid:父进程id
psr:运行该线程的CPU的序号
args:命令行参数

L:显示进程,并尽量显示LWP和NLWP(线程个数)

查看线程占用CPU情况
top
d:后接整个界面更新的描述,默认5秒
p:指定某个PID来进行查看检测
top执行过程中可以使用的按键
    ?:显示在top当中可以输入的按键
    H:查看每个线程占用CPU的情况
    M:内存占用排序
    P:cpu占用排序
    N:以PID来排序
    k:给某个PID一个信号
    1:显示每个CPU的详细情况


查看java进程
jps -lm
jps [options] [hostid]
options可以用
  -q :安静模式
  -m :输出传递给main方法的参数
  -l :显示完整路径
  -v :显示传递给JVM的命令行参数
  -V :显示通过flag文件传递给JVM的参数
  -J :和其他Java工具类似用于传递参数给命令本身要调用的java进程
  hostid是主机id,默认localhost。

查看当前虚拟机的线程栈
jstack -l vmid
  -F 强制输出线程堆栈
  -l 显示关于锁的附加信息
  -m 显示本地方法堆栈
////也可以这样:
////jstack 进程号|grep -A 50 16进制的线程号(如:58df)  
////-A 50表示查找到所在行的后50行

猜你喜欢

转载自deyimsf.iteye.com/blog/1930014