线上服务器oom排查总结

1.oom情况

出现java.lang.OutOfMemoryError: GC overhead limit exceeded  一般是(某个循环里可能性最大)在不停的分配对象,但是分配的太多,把堆撑爆了。

出现java.lang.OutOfMemoryError: Java heap space一般是分配了巨型对象
下面就是出现GC overhead limit exceeded 的实际情况,当时是12000左右的对象,每个对象转json后输出的大小为180KB,结果导致cup特别高,然后服务假死,出现oom,其中CUP指标达到了1000左右

遇到这种情况需要首先看cup、load是否高,然后打印出最好导出线程的快照信息

1.看cup高的命令:top -Hp  进程id,然后将线程PID转化为16进制, printf "%x\n" PID ,之所以转为为16进制是因为堆栈里,线程id是用16进制表示的

2.导出线程快照信息:jstack  进程号

3.看gc回收情况:jstat -gcutil 进程号 间隔时间

4.看上下文切换频率:vmstat -t  间隔时间(秒)

5.用于生成堆转储快照(一般称为heapdump或dump文件):jmap -dump:live,format=b,file=heap.bin <pid> 生成这个文件也可以在tomcot上进行配置,在oom时自动生成hprof或者dump文件:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/log/risk-manager-magpie.hprof

现公司目前使用的Sauron监控平台,大体截图如下:

6.GC日志回收总结图

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值