读书人

线下有关问题排查常用命令

发布时间: 2012-11-25 11:44:31 作者: rapoo

线上问题排查常用命令

1? 通过sar -q -f /var/log/sa/sa16 命令来查看某天的机器load记录

2?netstat -n |grep ':80 ' -c 来查看当前HTTP请求数,数量大概在300,属于正常范围。

3?netstat -n |grep ':8009 ' -c 来查看JBoss正在处理Http请求进程,数量大概在20,也属于正常范围。

?

分析JBoss正在干什么

通过kill -3 pid dump JBoss中的进程,来查看JBoss中正在跑的进程。

Heap PSYoungGen      total 486272K, used 193722K [0x95a50000, 0xb4e50000, 0xb4e50000)  eden space 460992K, 40% used [0x95a50000,0xa0ef2b38,0xb1c80000)  from space 25280K, 34% used [0xb1c80000,0xb250bf28,0xb3530000)  to   space 24960K, 0% used [0xb35f0000,0xb35f0000,0xb4e50000) PSOldGen        total 1060864K, used 865633K [0x54e50000, 0x95a50000, 0x95a50000)  object space 1060864K, 81% used [0x54e50000,0x89ba8570,0x95a50000) PSPermGen       total 98304K, used 72718K [0x44e50000, 0x4ae50000, 0x54e50000)  object space 98304K, 73% used [0x44e50000,0x49553918,0x4ae50000)

发现PSOldGen,PSPermGen 使用不正常,可能是内存溢出。

内存分析

常规手段搞不定,只好请出Jvm分析利器,首先先来看看内存里到底放了什么东西。通过命令: /opt/taobao/java/bin/jmap -histo PID 来查询内存中的对象数量:

 num     #instances         #bytes  class name----------------------------------------------   1:      11504468      184071488  java.lang.Integer   2:       1812475      165608576  [C   3:        515961      149531208  [B   4:        338909       88256392  [Ljava.lang.Object;   5:       2061748       49481952  java.lang.String

很显然 java.lang.Integer 数量是异常,赶紧dump整块内存下来分析到哪个类耗费这么多java.lang.Integer。

/opt/taobao/java/bin/jmap -dump:format=b,file=jvm.core PID dump内存镜像。

通过Memory Analysis分析镜像文件拿到内存溢出报告。

?

?

读书人网 >互联网

热点推荐