java排查故障
java排查故障
top -Hp 31327
#或top -p 31327,再按shift+h,-H则是线程开关,传入该参数的话,top界面会显示所有单独的线程列表)
##31327为java进程,拿到异常的线程id后,便可以将该进程的线程栈用下面的jstack命令全部输出:
##jstack 查看java 堆栈信息
jstack 31327 |more
"http-bio-18080-exec-11" daemon prio=10 tid=0x00007f50b028e800 nid=0x5757 runnable [0x00007f50936eb000]
"http-bio-18080-exec-9" daemon prio=10 tid=0x00007f50b02a5000 nid=0x7a9d runnable [0x00007f512d6b5000]
"http-bio-18080-exec-8" daemon prio=10 tid=0x00007f50b02a3800 nid=0x7a9b runnable [0x00007f512d9e3000]
"http-bio-18080-exec-7" daemon prio=10 tid=0x00007f50b0011000 nid=0x7a99 runnable [0x00007f512dc88000]
"http-bio-18080-exec-5" daemon
————————————————
##可以看到这些线程都一直挂在程序的某一行,多半是这里发生了死锁
jps -vm | grep 31327 |more
##可以查看java进程的参数或者日志地址等.如果没有显示参数的话,可以cd到/proc/15195/cwd目录,该目录便是进程的运行目录
jstat -gc 15195
##获得当前进程的gc状态 ,注:用jstat -gcutil $PID $INTERVAL $TIMES查询可能会更直接
##如果是PU(PermGen Usage)占用非常高,约为95.7%,是因为Perm代过高,且CMS GC无法回收掉Perm区内容,而导致频繁GC。
##CMS GC与普通的STW Full GC不同,不会暂停应用,但是会导致CPU使用率非常高。
##解决方法有两种:1)提高Perm区大小,-XX:PermSize -XX:MaxPermSize,2)关掉Perm区收集机制,取消-XX:+CMSClassUnloadingEnabled
————————————————
######## 线程状态: #################
Deadlock – 死锁
Runnable – 执行中
Suspended – 暂停
Blocked – 阻塞
Parked – 停止
Waiting on condition – 等待资源
Waiting on monitor entry – 等待获取监视器
Object.wait() 或 TIMED_WAITING – 对象等待中
最新文章
- SSRF篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题
- 浅谈Linux中的信号处理机制(二)
- 【原创】AC自动机小结
- android 打开GPS的几种方式
- java代码整理---正则表达式
- POJ_2446_Chessboard
- 【ArcGIS 10.2新特性】Geodatabase 10.2 常见问题
- 【CDOJ931】Car race game(树状数组求逆序)
- kafka第六篇---多个进程读不齐
- 【Alpha】第一次项目冲刺
- Zabbix3.0基础教程之二:item、trigger、action、graph配置
- train_test_split数据切分
- 小甲鱼Python视频课后答案(第一讲)---仅记录学习
- centos7的ssh服务连接
- DefWindowProc是一个会产生消息的函数
- 【洛谷P3919】可持久化数组
- ThinkPHP 3.2 DEMO案例系列【phpmailer批量发送邮件】
- C# winform combobox默认选中项方法
- MySQL隐形索引简介
- ADCD 1.9 ZOS 配置 CTCI-W32 TCPIP 网络