美文网首页
LINUX-JVM故障排查

LINUX-JVM故障排查

作者: 一岁一枯荣啊 | 来源:发表于2019-07-18 21:27 被阅读0次

JVM故障排查( CPU飙升以及频繁FULL GC)

1.查看进程的CPU使用情况

top

top - 14:59:14 up 229 days, 15:04,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 163 total,   1 running, 162 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3922080k total,  3773280k used,   148800k free,   282712k buffers
Swap:  4194300k total,        0k used,  4194300k free,  1049836k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                              
 5063 appweb    20   0 6090m 2.1g  18m S  1.0 55.3 332:52.73 java                                                                  
    1 root      20   0 19344 1528 1200 S  0.0  0.0   0:29.11 init                                                                  
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                              
    3 root      RT   0     0    0    0 S  0.0  0.0   1:23.65 migration/0                                                           
    4 root      20   0     0    0    0 S  0.0  0.0   0:42.74 ksoftirqd/0                                                           
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                             
    6 root      RT   0     0    0    0 S  0.0  0.0   0:34.34 watchdog/0                                                            
    7 root      RT   0     0    0    0 S  0.0  0.0   1:34.51 migration/1                                                           
    8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/1                                                             
    9 root      20   0     0    0    0 S  0.0  0.0   1:21.09 ksoftirqd/1                                                           
   10 root      RT   0     0    0    0 S  0.0  0.0   0:31.04 watchdog/1                                                            
   11 root      RT   0     0    0    0 S  0.0  0.0   1:53.36 migration/2                                                           
   12 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/2                                                             
   13 root      20   0     0    0    0 S  0.0  0.0   0:42.05 ksoftirqd/2                                                           

2.查看消耗比较高的进程是哪个程序

可以看到PID=5063的Java进程CPU使用率特别高


$ jps -l
77362 sun.tools.jps.Jps
5063 com.zes.order.Test

发现是com.zes.order.Test引起的

3.查看堆栈信息

查看消耗cpu过高的线程 tid


ps p 5063 -L -o pcpu,pid,tid,time,tname,cmd

tid 31886

然后查询消耗cpu过高获取线程号 tid

$ printf "%x\n" 31886

13c7

jstack pid 命令查看当前java进程的堆栈状态 搜索tid = 13c7的线程

$ jstack 5063 

"Thread-142" #152 prio=5 os_prio=31 tid=0x00007f8a57da4000 nid=0x16b03 waiting for monitor entry [0x000070000fb1e000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.io.PrintStream.println(PrintStream.java:805)
    - waiting to lock <0x000000074000a990> (a java.io.PrintStream)
    at com.zes.order.Test.lambda$main$0(Test.java:17)
    at com.zes.order.Test$$Lambda$1/1389647288.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:748)

我们可以根据堆栈信息,直接定位到Test的17行,查看代码中具体是什么原因导致计算量如此之高。

4.JVM频繁FullGC

jstat查看进程的运行情况


$ jstat -gc 5063 1000
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
512.0  512.0  160.0   0.0   24064.0   1932.4   87552.0     2673.8   5504.0 5087.3 640.0  552.9     732    8.725   6703      0.000    8.725
512.0  512.0  160.0   0.0   24064.0  17768.7   87552.0     2673.8   5504.0 5087.3 640.0  552.9     732    8.725   6722      0.000    8.725
512.0  512.0   0.0   128.0  24064.0   5263.1   87552.0     2673.8   5504.0 5087.3 640.0  552.9     733    8.735   6799      0.000    8.735
512.0  512.0   0.0   128.0  24064.0  15237.0   87552.0     2673.8   5504.0 5087.3 640.0  552.9     733    8.735   6822      0.000    8.735

FGC 可以看到FullGC次数过多


dump 内存日志
jmap -dump:format=b,file=/Users/zes/Desktop/heap.hprof  5063 

vsiualVM 分析可得

相关文章

  • LINUX-JVM故障排查

    JVM故障排查(CPU飙升以及频繁FULL GC) 1.查看进程的CPU使用情况 2.查看消耗比较高的进程是哪个程...

  • vSphere 性能优化方法 & 故障排错方法及工具总结(二)

    故障排查方法、工具总结 一、vSphere 故障排查思想 1 、故障排查思维逻辑 故障排查涉及到整体的排错方法论,...

  • vsphere 故障排查

    vsphere 故障排查 vsphere 故障排查 1 vSphere 排错思想1.1 故障排查逻辑1.2 常规故...

  • 电脑直连路由器无法登陆WEB界面

    【详细故障排查】如需了解更加详细的排查过程,请点击我进入

  • Linux基础-Linux实用故障排查

    五、Linux实用故障排查 1,基础故障排查规则 大数据集群运行在linux系统上总会遇见各种各样的问题,我们要定...

  • 售货机工作职责

    排查解除故障。每天早上上货前首先检查机器,查看显示屏,纸币器,硬币器,货道,排查解除故障。 抄配货单。 库房配货。...

  • AP无法上线AC

    【免费视频】RAP无法上线排查 【详细故障排查】如需了解更加详细的排查过程,请点击我进入

  • 线上linux系统故障排查之一:CPU使用率过高

    《线上linux系统故障排查之一:CPU使用率过高》《线上linux系统故障排查之二:内存占用过高》 一个应用占用...

  • BGP故障排查

    一、BGP邻居无法建立问题 1.查看是否配置了正确的邻居、AS号。 2.检查邻居是否可达,由于一台路由器可能有多个...

  • Redis 故障排查

    最近公司要做一天8亿级数据的缓存,然后让我对redis进行一波性能测试,但是今天发现redis突然没有在运行,并且...

网友评论

      本文标题:LINUX-JVM故障排查

      本文链接:https://www.haomeiwen.com/subject/ngirlctx.html