`
nathan09
  • 浏览: 145228 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

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



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics