内存100%
一、登入服务器用 top -c 命令查看找到cpu占用率达到100%的进程
假如:进程ID为9720的进程CPU占用率超过100%。
二、top命令加上 -H -b 两个选项:-H 可以查看由某个进程启动的所有线程,-b 选项指定以批处理模式输出结果:查询9072进程的线程
命令:$top -Hbp 9702
对上面的命令进行优化,只查询超过50%的命令
top -Hbp 9702 | awk '/java/ && $9>50'
假如:线程ID为10007的线程CPU占用率为100.5%,它就是罪魁祸首
第二招,用jstack 命令dump出线程栈信息,可以直接定位到出问题的代码段。这里也分两步。第一步把上面的线程ID 10007 转化为十六进制:
$printf"%x\n"10007
2717 10007转成16进制就是2717
第二步使用命令 jstack $pid | grep “线程id” 把信息打印出来:
$ jstack 9702 | grep '2717' -A 30
找到错误信息,解决
思路:
找出CPU占用率高的进程
找出问题进程内CPU占用率高的线程
通过线程栈信息找出该线程当时在运行的问题代码段
实施要点:
top -Hbp ‘pid’ 定位问题线程
jstack ‘pid’ | grep ‘thread_id’ 找出问题代码