server问题排查经常使用命令

1、top
查看系统负载情况,load average
CPU使用情况,按1查看每一个CPU的使用情况
shift+h  查看每一个线程的情况

2、free -m  
按兆为单位输出内存的已用,未用。总共等结果
             total       used       free     shared    buffers     cached
Mem:         32176      27911       4265          0        132       7114
-/+ buffers/cache:      20664      11512
Swap:        31996          0      31996

3、查看server磁盘使用情况
df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda3             510G  317G  168G  66% /
/dev/sda1             996M   40M  905M   5% /boot
tmpfs                  16G     0   16G   0% /dev/shm
查看详细是哪个文件夹磁盘使用过大
du -h --max-depth=1 /etc/

4、查看java进程
ps -ef | grep java


5、查看占用CPU最大的线程
ps Hh -eo pid,tid,pcpu |sort -nk3|tail
 2858  2889  1.0
 2858  3982  1.8
 6796  7480  2.2
查看相应线程的堆栈
jstack  6796 | grep -C 10 'nid=0x1d38'
注意 7480 ---> 十六进制 1D38  ---> 小写

6、查看内存对象

jmap -histo:live pid |head -n 20 

最好不要加live,会导致FGC


7、查看gc情况:
jstat -gcutil <pid> <频率> 次数
-rbash-3.2$ jstat -gcutil 6796 1000 3
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
  0.00  26.80  19.02  76.18  21.64   1607   90.868     4   15.923  106.791
  0.00  26.80  23.08  76.18  21.64   1607   90.868     4   15.923  106.791
  0.00  26.80  26.21  76.18  21.64   1607   90.868     4   15.923  106.791
  
8、生成内存堆栈文件
jmap -dump:format=b,file=/soft/dump/mem_dump.bin pid 
tar -czf mem_dump.tar.gz mem_dump.bin 

可通过Eclipse的MemoryAnalyzer工具分析


JVM相关:  http://www.cnblogs.com/redcreen/tag/jvm/

内存分析工具  http://www.eclipse.org/mat/





原文地址:https://www.cnblogs.com/liguangsunls/p/6933361.html