淘先锋技术网

首页 1 2 3 4 5 6 7

CPU飙高排查工具:
1)、用命令top查看java进程的内存和cpu占用情况。

2)、top -Hp [pid] 查询所有线程列表

3)、将需要的线程ID转换为16进制格式:printf “%x\n” [tid]

4)、jstack pid | grep [tid] -A 30 查看该线程堆栈信息

内存过高或者频繁full gc排查工具:
1)、查看占用内存最大的10个进程:ps -aux | sort -k4nr | head -n 10

2)、查看内存占用最大的进程的命令:ps aux| grep -v “USER” |sort -n -r -k 4 |awk ‘NR==1{ print $0}’

3)、用jstat命令可以看服务的gc情况(例:jstat –gc [pid] 1000 10),如果一直在频繁的full gc或者gc时间过长,内存肯定有大量某个对象回收不掉

4)、可以用jmap -histo pid查询指定java进程的所有对象使用内存情况。

5)、实在不行可以用jmap命令dump堆文件下来(例:jmap -dump:format=b,file=文件名 [pid]),然后用MAT工具分析

磁盘IO阻塞排查工具:
1)、用top命令如果看到%wa过高,一般就是磁盘IO阻塞了

2)、可以用iostat查看IO阻塞的具体情况(例:iostat –x 1 5),如果%util过高,await与svctm的数值差异大,肯定就是磁盘IO阻塞了,r/s和w/s的数值可以分析出是阻塞在读还是在写

3)、用iotop命令可以看到具体是哪个进程占用着磁盘IO(例:iotop -oP)

4)、用lsof命令可以找到该进程操作了哪些文件(例:lsof –p [pid])

网络IO阻塞排查工具:
1)、iftop命令可以看到是与哪个地址有大量IO传输(例:iftop -n)

2)、然后可以用netstat命令查看是否有IO积压(例:netstat -antop |grep [ip])