1.问题描述

线上出现fullgc报警,每5分钟一次

2.背景知识

1. 程序执行了System.gc()

  1. 执行了jmap -histo:live pid命令
  2. 在执行minor gc的时候进行的一系列检查
    执行Minor GC的时候,JVM会检查老年代中最大连续可用空间是否大于了当前新生代所有对象的总大小。 如果大于,则直接执行Minor GC(这个时候执行是没有风险的)。 如果小于了,JVM会检查是否开启了空间分配担保机制,如果没有开启则直接改为执行Full GC。 如果开启了,则JVM会检查老年代中最大连续可用空间是否大于了历次晋升到老年代中的平均大小,如果小于则执行改为执行Full GC。 如果大于则会执行Minor GC,如果Minor GC执行失败则会执行Full GC
  3. 使用了大对象
  4. 在程序中长期持有了对象的引用

3.排查步骤

注意: JVM在执行dump操作的时候是会发生stop the word事件的,也就是说此时所有的用户线程都会暂停运行。

3.1通过JVM参数获取dump文件

# 1.线上环境如果有流量需要在启动服务脚本中加入如下JVM参数,表示在发生fullgc的时候自动dump
-XX:HeapDumpBeforeFullGC
# 2.与第一个JVM参数配套使用,指定dump文件的保存路径,便于排查问题,路径也可以是相对路径
-XX:HeapDumpPath=保存dump文件的文件绝对路径# 说明:如果加入这两个jvm参数还是没有dump下来文件,可能是你的jvm的参数中有其他的参数导致dump失败,排查看是否有如下参数,如果有去掉即可
-XX:+DisableExplicitGC

3.2通过JDK自带的工具jmap获取dump文件

# 导出内存dump文件
jmap -F -dump:live,file=jmap.hprof [PID] ##### 3.3把dump文件从线上主机下载到本地
命令格式:
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file##### 3.4通过JDK自带的jvisualvm工具分析或者下载三方软件jprofiler来分析dump文件即可##### 3.5最重要的一点,要把fullgc发生时刻的dump文件和正常没有发生fullgc时间的dump文件都下载到本地,然后对比观察分析方便找到问题的原因

gc就是fullgc吗 major_线上出现fullgc问题如何排查?相关推荐

  1. 记一次线上cpu飙升100%的排查过程

    大家好,我是烤鸭: 最近没怎么写技术文章,还是得回归下初心,正好前几天出现个线上问题,记录下排查过程. 问题描述 某个时间点,接收到接口响应慢报警. 过一会收到服务器cpu可用率低(<10%)报 ...

  2. Java线上CPU内存冲高问题排查步骤

    1 引言 作为一名从事Java开发快一年的程序员,在线上经常碰到某个模块的Pod发出CPU与内存告警的问题,而这些问题会导致系统响应缓慢甚至是服务不可用.一般情况下可以通过重启或者调高Pod的资源量或 ...

  3. 线上服务器内存飙升怎么排查?

    一.线上服务器内存飙升怎么排查? 1.通过top命令查看cpu.内存占用情况 2.通过shift+m命令按内存占用排序查看哪个java进程占用内存高,获取pid 3.通过jmap -histo pid ...

  4. 纯干货:线上出现fullGC次数很多的排查思路以及实践总结

    最近线上发布了一个版本,导致full gc次数忽然就上去了,虽然对线上业务造成的影响还不是很大,但是为了以防万一还是对这个问题做了相关排查. GC命令排查 一开始还是从堆的变化开始: # 查看每秒的堆 ...

  5. 一次线上服务fullGC原因排查

    2017年12月09日 21:39:46 阅读数:384 一.现象 早上九点多又收到了fullGC次数过高的应用监控告警{P1}{故障}JVM Old GC all(#3) full_gc_count ...

  6. 线上 RPC 偶发超时故障排查及 GC 调优实录

    本文概要 RPC服务异常和排查过程 排查方向 问题根因和解决方案 JVM GC 原理与优化方案 基础排查工具使用 问题背景 RPC 服务调用方反馈服务有时会有超时. 查看监控平台发现有客户端调用超时, ...

  7. java - JVM 线上服务的FGC问题排查

    线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力.同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验. 过去半年时间里,我们的广告 ...

  8. 线上服务的FGC问题排查,看这篇就够了!

    线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力.同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验. 过去半年时间里,我们的广告 ...

  9. 【转】线上服务的FGC问题排查,看这篇就够了!

    线上服务的GC问题,是Java程序非常典型的一类问题,非常考验工程师排查问题的能力.同时,几乎是面试必考题,但是能真正答好此题的人并不多,要么原理没吃透,要么缺乏实战经验. 过去半年时间里,我们的广告 ...

最新文章

  1. Asp.net MVC 3 防止 Cross-Site Request Forgery (CSRF)原理及扩展 安全 注入
  2. c语言调用linux脚本,C语言执行shellcode的五种方法
  3. 区块链浏览器_欧科云链OKLink区块链浏览器,如何挖掘数据背后的价值?
  4. oracle中的nls在哪,Oracle的NLS设置
  5. Python学习 :格式化输出
  6. system函数阻塞_简单的Java阻塞队列
  7. python正则表达式代码_python正则表达式的使用(实验代码)
  8. 谷歌开源漏洞扫描器“海啸”,专为大型企业服务
  9. Tomcat使用Tomcat Native和APR
  10. 十、JAVA抽象类的定义使用
  11. 别人的Python爬虫代码能读懂,自己却还是不能自由去爬?社群日报
  12. i5200u处理器 HD5500集成显卡安装黑苹果教程
  13. 图片尺寸放大不改变清晰度
  14. 最详细最直观的>>>理解Pandas分组聚合和透视图标
  15. 【CXY】JAVA基础 之 Collections
  16. 历届CSP真题题解-CSP刷真题之路
  17. PHP curl的DNS解析问题(PHP下curl很慢)
  18. 读书笔记之:C++ Primer (第4版)及习题(ch12-ch18)
  19. sql 条件查询以及模糊查询
  20. correl函数相关系数大小意义_Excel使用Correl函数返回相关系数并确定属性关系的步骤方法...

热门文章

  1. SQL -- 多表查询
  2. js(Dom+Bom)第二天(2)
  3. 【C++】如何提高Cache的命中率,示例
  4. 爬虫的一些工具(二)
  5. ThinkJS前端搭配vue时的Nginx配置
  6. Exception和RuntimeException的区别
  7. 用java发送邮件(黄海已测试通过)
  8. [JSOI2008 Prefix火星人]
  9. 看完后完全了解 Vue 2.0 和 Vue 3.0 的区别
  10. spring-boot注解详解(一)