java日常问题排查1
Posted 永远的七号
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java日常问题排查1相关的知识,希望对你有一定的参考价值。
有关CPU占用高的问题
掌握一些常用命令 jstack jmap jps ps -ef 等等
jmap
# sudo -u admin /opt/taobao/java/bin/jmap -dump:live,format=b,file=/home/admin/crawler/logs/heap.bin 38
top 命令查看CPU使用情况 PID为进程号
执行 ps -ef | grep 18201 找到具体进程
涉及公司图片不能泄露,以本机任意一个进程代替,这个命令会出现两个结果,第二个是刚才执行“ ps -ef | grep 18201 ” 产生的
查看所有容器 sudo docker ps -a
进入容器 sudo docker exec -it 容器ID bash
再次使用TOP命令
jstack打印堆栈信息
sudo -u admin /xxx/java/bin/jstack -l 34 > /localhost/stack.log
或者 sudo -u admin /xxx/java/bin/jstack `jps |grep Bootstrap |awk \'{print $1}\'`> /localhost/stack.log
在宿主机 执行 cp filename ~ 直接copy到跳板机
注意点:1、jstack需要绝对路径
2.jstack 是jstack是java虚拟机自带的一种堆栈跟踪工具,一定要去java/bin 目录下使用该命令
分析jstack日志
执行 top -H p 进程ID 得到 具体线程ID
线程ID换算成16进制,在jstack日志中找对应的nid,例如nid=0x70,线程目前是 Waiting on condition,通过堆栈信息找到是哪一行代码的问题
- 死锁,Deadlock(重点关注)
- 执行中,Runnable
- 等待资源,Waiting on condition(重点关注)
- 等待获取监视器,Waiting on monitor entry(重点关注)
- 暂停,Suspended
- 对象等待中,Object.wait() 或 TIMED_WAITING
- 阻塞,Blocked(重点关注)
- 停止,Parked
以上是关于java日常问题排查1的主要内容,如果未能解决你的问题,请参考以下文章