在六月一个炎炎烈日的周六, 我坐在凉爽的空调房里, 突然发现生产环境有个机器 CPU 一直狂转, 我想着: 这可不行, 本来地球就够热的了, 为了保护环境, 一定要把它的 CPU 降下来.

它是一个 java 应用程序, 进一步查看其它指标, 发现这货还一直报 GC overhead alert, 原来有个二货工程师写的新 bug, 一定要把它找出来.

下载 verbose GC log, 通过 log viewer 一看, 哇, 神奇: 无论老年代, 还是年轻代, 都有非常多的空闲内存. 如下图, 只有放大到 500 倍才能看清楚, 否则都是 Full GC 的黑线....

那么下一步怀疑老年代被占满了, 可是, 还是很失望: 老年代空闲内存多的是

2019-06-15T00:40:55.978-0700: 53291.378: [Full GC2019-06-15T00:40:55.978-0700: 53291.378: [CMS: 168666K->168666K(1433600K), 0.3949710 secs] 172644K->168666K(2170880K), [CMS Perm : 123793K->123793K(524288K)], 0.3951790 secs] [Times: user=0.39 sys=0.00, real=0.39 secs]
2019-06-15T00:40:56.479-0700: 53291.879: [Full GC2019-06-15T00:40:56.479-0700: 53291.880: [CMS: 168666K->168665K(1433600K), 0.3926360 secs] 171687K->168665K(2170880K), [CMS Perm : 123793K->123793K(524288K)], 0.3928600 secs] [Times: user=0.38 sys=0.01, real=0.39 secs]

下一步怀疑 System.gc() 或者 Runtime.gc(), 果然被我聪明的猜中了:

那么如何修复这个问题呢?

  1. 找出这个 System.gc()代码, 直接去掉它;
  2. 在 JVM 启动参数中加上 -XX:+DisableExplicitGC

原文链接:

http://www.tianxiaohui.com/index.php/Java%E7%9B%B8%E5%85%B3/%E8%AF%8A%E6%96%AD%E7%94%B1-System-gc-%E5%AF%BC%E8%87%B4%E7%9A%84-CPU-%E9%A3%99%E5%8D%87%E5%92%8C-GC-overhead-alert.html

诊断由 System.gc() 导致的 CPU 飙升和 GC overhead alert相关推荐

  1. 一次nacos 导致的 CPU 飙高问题

    序 今天下午突然 出现 测试环境 cpu飙高,干到了 60%,其他项目 响应时间明显变长...有点吓人,不想背锅 项目背景 出问题的项目是 需要连接各个不同nacos 和不同的 namespace 进 ...

  2. nacos配置刷新失败导致的cpu上升和频繁重启,nacos配置中心源码解析

    大家好,我是烤鸭: nacos 版本 1.3.2,先说下结论,频繁重启的原因确实没有找到,跟nacos有关,日志没有保留多少,只能从源码找下头绪(出问题的版本 server用的是 nacos 1.1, ...

  3. java进程CPU飙高

    早上某段时间突然看到看到一台生产机器上的CPU飙高 top 然后就请出了大神工具JVM 具体JVM的介绍看:http://www.cnblogs.com/smail-bao/p/6027756.htm ...

  4. jvm 崩溃日志设置_记一次JVM疯狂GC导致CPU飙高的问题解决

    背景 线上web服务器不时的出现非常卡的情况,登录服务器top命令发现服务器CPU非常的高,重启tomcat之后CPU恢复正常,半天或者一天之后又会出现同样的问题.解决问题首先要找到问题的爆发点,对于 ...

  5. 记一次jvm疯狂gc导致CPU飙高的问题解决

    在环境上遇到tomcat频繁gc导致cpu load飙高的问题,本来想自己写一个文章的,看到这个偷懒转载一下. 线上web服务器不时的出现非常卡的情况,登录服务器top命令发现服务器CPU非常的高. ...

  6. JVM优化之系统CPU飙高和GC频繁

    本文来说下JVM优化之系统CPU飙高和GC频繁 文章目录 概述 Full GC次数过多 CPU过高 某个线程进入WAITING状态 死锁 本文小结 概述 处理过线上问题的同学基本上都会遇到系统突然运行 ...

  7. 面试官问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过 ...

  8. CPU飙高,频繁GC,怎么排查?

    作者:爱宝贝. https://my.oschina.net/zhangxufeng/blog/3017521 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC ...

  9. 生产环境碰到系统CPU飙高和频繁GC,你要怎么排查?

    处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题.当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警.本文主要针对系统运行缓慢这 ...

最新文章

  1. java 大文件 md5_使用Java为大文件生成MD5非常慢
  2. DL之VGGNet:VGGNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  3. 【工作秘籍】Facebook内部高效工作大揭秘
  4. HTML语言中checkbox的行为
  5. 解决wmv播放的问题
  6. 女性买房需要注意哪些问题
  7. 持有1000枚比特币及以上的地址数量创历史新高
  8. Python学习笔记——如何获得数值类型的最大值和最小值(表示范围)
  9. 并发环境下的缓存容器性能优化(上):不可变的哈希表
  10. 在 Perl 中利用 DOM 和 XPath 对 XML 进行有效处理
  11. spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求
  12. 通过千千静听歌词服务器下载歌词(Delphi版)
  13. Web前端工程师推荐的书籍
  14. Flowable流程设计器的使用
  15. Android仿微信语音聊天界面
  16. TNS-12555: TNS:permission denied
  17. 送小公主——哆啦A梦(Python代码实现)
  18. 双向可控硅晶片光耦 (TLP160J TLP260J TLP525G) 基本原理及应用实例
  19. oracle常用创建模式,ORACLE 常用操作命令
  20. c# 计算圆锥的体积_用C#如何编写程序计算球,圆柱和圆锥的表面积和体积? 用C#编写方法并通过方法...

热门文章

  1. 二线制仪表能用计算机电缆吗,一体化温度变送器热电阻输出:二线制 4-20mA DC
  2. shp面要素wgs84坐标转火星坐标(gcj)方法
  3. 城市复杂路况下交通流模拟matlab仿真
  4. 基于deepke构建红楼梦知识图谱
  5. Java项目:SSM服装出租服装店租赁服装管理系统
  6. 京港澳高速韶关段发生特大交通事故 7死3伤
  7. pip使用163源(linux)
  8. 吐血整理2023版(李思德)一级建造师《市政实务》:城镇道路工程--精讲课程讲义
  9. DIDIDI loves to take a shower(乘法逆元)
  10. java入门基础四(方法和数组)