java问题诊断方法及工具

线上系统出现问题时,需要记载系统当前运行状况,总结一下,大概需要关注以下几个方面:
1.负载:—— top命令
 在linux上,执行top 等命令,关注load, Memory, CPU 等系统概况,以及关注CPU和memory 占用较多的进程。
 使用top -H, 并按 shift+p 对CPU进行排序,找到当前占用CPU最多的线程。(top -u bpm -H),-H 按线程显示,否则按进程显示
 使用 ps -T <pid> |wc -l 找到当前运行的java 进程的线程数。

2.Thread dump—— jstack
 kill -3 <pid> 
 jstack <pid> 截获当前java 进程的线程堆栈。

 (java thread dump相关文章)


3. Memory—— jmap
 jmap -heap <pid> 可以得到当前堆内存情况。
 如果怀疑有内存问题,还可以dump 堆对象。
 Java5:jmap -heap:format=b <pid>
 Java6: jmap -dump:format=b,file=heap.bin <pid>
 注意:这个操作对机器有很大的性能影响。在java 6中,这个也可以通过java 启动参数中加入-XX:HeapDumpPath=/home/nasdaq/oom.hrof -XX:+HeapDumpOnOutOfMemoryError 实现OOM时自动memory dump

4.GC—— jstat
 jstat -gcutil <pid> 得到当前应用的gc 情况。


5.网络连接情况
 得到与网络各机器的连接数
 netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r 
以上命令执行结果是:
 连接数量  连接ip
 也可以通过netstat 具体关注某个端口的连接数。

6.日志

 备份当前应用日志。


7.工具:

Heap Dump分析工具:Memory Analyzer (MAT):http://www.eclipse.org/mat/

Thread Dump分析工具:Lockness:http://lockness.plugin.free.fr/home.php



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值