最近频繁收到线上报警,就看看到底啥原因

二 导出dump文件

2.1 查找报警对应的进程

ps -ef|grep XX

是23898,看一下gc情况:

这才不到半小时,fgc就增加了好几次。

jmap导出dump。

jmap -dump:format=b,file=salary1 23898

因为文件相对较大,几百M。直接下载还是比较慢的,所以压缩后下载是快的。

通常zip,tar压缩后是原来的1/10.再大的也可以考虑bz2等别的格式。

三 分析dump

3.1 visualVM

jdk 自带的,可以去jdk安装目录下面直接打开。

直观的感受就是实例数里面,AQS的node节点很多。下面的hashmap,ConcurrentHashMap也是值得关注的。

3.2 MAT

在用mat看看。

1. Histogram可以列出内存中的对象,对象的个数以及大小。
     2. Dominator Tree可以列出那个线程,以及线程下面的那些对象占用的空间。
     3.Top consumers通过图形列出最大的object。
     4.Leak Suspects通过MA自动分析泄漏的原因。

因为是个web工程,所以,显示web容器是怀疑的对象。

大量的是线程池的线程。

点进去看Histogram:

抛出byte[],char[] 还是hashmap占用的多。

搜一下代码看看。

作为一个web工程,典型的MVC应用。

存在大量的json返回接口,都是使用hashmap实现的。

开发的时候省点时间,实际上不推荐的,定义个对应的bean,fastjson 转成对应的json就好。

效率也比这个好。

2. 在sso代码里面。

private final Map<Long, String> CITY_NAME = new ConcurrentHashMap<>();

类似这种,读代码后没有任何并发的情况,却滥用了ConcurrentHashMap。

业务目的就是根据cityid获取cityname.放到本地缓存或者redis都行。

常见的模式就是:初始化根据sso接口获取全部城市列表,放到缓存,定时去更新就好,毕竟城市调整的几率小(业务发展新增开通城市)。

后续待业务小伙伴优化后看效果,待反馈。

记一次排查线上full gc过程相关推荐

  1. 内存地址 哪个程序_记一次排查线上程序内存的忽高忽低,又是大集合惹祸了...

    一:背景 1. 讲故事 昨天继续还技术债,优化一轮后的程序拉到线上后内存继续忽高忽低,低的时候20G,高的时候30G,过了一会又下降了几个G,毫无疑问,程序中有什么集合或者什么操作占用了大量内存,所以 ...

  2. 记一次排查线上程序内存的忽高忽低,又是大集合惹祸了

    一:背景 1. 讲故事 昨天继续还技术债,优化一轮后的程序拉到线上后内存继续忽高忽低,低的时候20G,高的时候30G,过了一会又下降了几个G,毫无疑问,程序中有什么集合或者什么操作占用了大量内存,所以 ...

  3. 面试两连击:线上JVM GC问题和OOM内存溢出的解决方案,聊聊呗!

    点击上方石杉的架构笔记,右上角选择"设为星标" 每日早8点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 往期文章 BAT 面试官是如何 ...

  4. 阿里技术:如何快速排查线上故障?

    阿里技术:如何快速排查线上故障? 以下文章来源于阿里技术 ,作者小峯 阿里技术 阿里巴巴官方技术号,关于阿里的技术创新均呈现于此. 有哪些常见的线上故障?如何快速定位问题?本文详细总结工作中的经验,从 ...

  5. 记一次简单线上比赛--CTF(初级)

    记一次简单线上比赛–CTF(初级) 第一题:胖虎收到了一段特殊的字符串O5SWYY3PNVSXI33FORWGCYQ=,你能帮他解出正确内容吗? 解答: 1.首先看到这一串字符串就想到base64编码 ...

  6. 通过btrace排查线上频繁Full GC的case

    概述 又是一次因为线上报警机制开启的排查问题之旅.某日,钉钉机器人疯狂报警: 接着就是申请机器权限去排查问题,既然是频繁Full GC,那我们排查问题的思路就应该是找到引起Full GC的原因.引起频 ...

  7. linux 内存溢出排查_记一次JAVA 线上故障排查完整套路

    JAVA线上故障排查全套路 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍.同时例如jstack.jmap等工具也 ...

  8. 通过btrace排查线上频繁Full GC的case 1

    概述 又是一次因为线上报警机制开启的排查问题之旅.某日,钉钉机器人疯狂报警: 接着就是申请机器权限去排查问题,既然是频繁Full GC,那我们排查问题的思路就应该是找到引起Full GC的原因.引起频 ...

  9. 双12压测引出的线上Full GC排查

    这个Full GC问题是去年双12压测的时候触发的,中间排查的过程和踩的坑给大家借鉴一下. 线上问题 双12之前压测的时候起了很小的量,直接触发了Full GC,吓尿了,因为马上双12大促预热就要开始 ...

最新文章

  1. 中国人炫富的第N种表现。
  2. Spring Boot2.x-11 使用@ControllerAdvice和@ExceptionHandler实现自定义全局异常
  3. WCF 第十二章 对等网
  4. 第四范式入选Gartner 2020十大战略技术趋势报告 成全球AutoML代表厂商
  5. nfc卡模式与标准模式_张家口市环卫进入首都标准“京环模式”
  6. 大数据领域的专精特新“小巨人”中科闻歌
  7. cp 过程中目录突然挂了_怎么解决管材激光切割机切管过程中出现的过烧及挂渣...
  8. 计算机通信事业单位专业知识点,事业单位计算机专业知识招考大纲
  9. python关于字符串下面说法错误的是_关于字符串下列说法错误的是
  10. MySQL的JOIN用法
  11. Ceph 撸源码系列(二):Ceph源代码里的那些锁 std::mutex(2 of 3)
  12. Ubuntu16 e1000e驱动安装
  13. 区块链是什么通俗解释_区块链是什么?1个例子通俗解释,小白秒懂!
  14. 如何从头开始创建可用于生产环境的Webpack 4配置
  15. 计算时间差 html,计算时间差的公式
  16. iOS内存分配与五大区域
  17. 小程序前后台切换运行机制
  18. 我tcp可是铁齿金不换,诚实可靠小郎君——谈谈可靠数据传输服务
  19. iOS开发笔记--基于面向协议MVP模式下的软件设计
  20. 2022CFA一级二级三级视频网课资源

热门文章

  1. fundamentals\java\Thymeleaf
  2. lvs-dr集群之vip与dip/rip不在同一网段的实验环境设计及配置实现
  3. 大一寒假训练:暴力枚举
  4. Vis-MVSNet: Visibility-Aware Multi-view Stereo Network(IJCV 2022)
  5. 复化梯形公式求椭圆周长C语言,C语言编程解线性,非线性方程,龙贝格算法.docx
  6. linux建立ssh、scp互信
  7. Android使用沉浸式导航栏
  8. 主要几款跑步APP对比
  9. 飞凌嵌入式丨NXP MFGTool软件烧录原理
  10. Grizzly和Netty以及Mina简单性能对比