记一次排查线上full gc过程
序
最近频繁收到线上报警,就看看到底啥原因
二 导出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. 讲故事 昨天继续还技术债,优化一轮后的程序拉到线上后内存继续忽高忽低,低的时候20G,高的时候30G,过了一会又下降了几个G,毫无疑问,程序中有什么集合或者什么操作占用了大量内存,所以 ...
- 记一次排查线上程序内存的忽高忽低,又是大集合惹祸了
一:背景 1. 讲故事 昨天继续还技术债,优化一轮后的程序拉到线上后内存继续忽高忽低,低的时候20G,高的时候30G,过了一会又下降了几个G,毫无疑问,程序中有什么集合或者什么操作占用了大量内存,所以 ...
- 面试两连击:线上JVM GC问题和OOM内存溢出的解决方案,聊聊呗!
点击上方石杉的架构笔记,右上角选择"设为星标" 每日早8点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 往期文章 BAT 面试官是如何 ...
- 阿里技术:如何快速排查线上故障?
阿里技术:如何快速排查线上故障? 以下文章来源于阿里技术 ,作者小峯 阿里技术 阿里巴巴官方技术号,关于阿里的技术创新均呈现于此. 有哪些常见的线上故障?如何快速定位问题?本文详细总结工作中的经验,从 ...
- 记一次简单线上比赛--CTF(初级)
记一次简单线上比赛–CTF(初级) 第一题:胖虎收到了一段特殊的字符串O5SWYY3PNVSXI33FORWGCYQ=,你能帮他解出正确内容吗? 解答: 1.首先看到这一串字符串就想到base64编码 ...
- 通过btrace排查线上频繁Full GC的case
概述 又是一次因为线上报警机制开启的排查问题之旅.某日,钉钉机器人疯狂报警: 接着就是申请机器权限去排查问题,既然是频繁Full GC,那我们排查问题的思路就应该是找到引起Full GC的原因.引起频 ...
- linux 内存溢出排查_记一次JAVA 线上故障排查完整套路
JAVA线上故障排查全套路 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍.同时例如jstack.jmap等工具也 ...
- 通过btrace排查线上频繁Full GC的case 1
概述 又是一次因为线上报警机制开启的排查问题之旅.某日,钉钉机器人疯狂报警: 接着就是申请机器权限去排查问题,既然是频繁Full GC,那我们排查问题的思路就应该是找到引起Full GC的原因.引起频 ...
- 双12压测引出的线上Full GC排查
这个Full GC问题是去年双12压测的时候触发的,中间排查的过程和踩的坑给大家借鉴一下. 线上问题 双12之前压测的时候起了很小的量,直接触发了Full GC,吓尿了,因为马上双12大促预热就要开始 ...
最新文章
- 中国人炫富的第N种表现。
- Spring Boot2.x-11 使用@ControllerAdvice和@ExceptionHandler实现自定义全局异常
- WCF 第十二章 对等网
- 第四范式入选Gartner 2020十大战略技术趋势报告 成全球AutoML代表厂商
- nfc卡模式与标准模式_张家口市环卫进入首都标准“京环模式”
- 大数据领域的专精特新“小巨人”中科闻歌
- cp 过程中目录突然挂了_怎么解决管材激光切割机切管过程中出现的过烧及挂渣...
- 计算机通信事业单位专业知识点,事业单位计算机专业知识招考大纲
- python关于字符串下面说法错误的是_关于字符串下列说法错误的是
- MySQL的JOIN用法
- Ceph 撸源码系列(二):Ceph源代码里的那些锁 std::mutex(2 of 3)
- Ubuntu16 e1000e驱动安装
- 区块链是什么通俗解释_区块链是什么?1个例子通俗解释,小白秒懂!
- 如何从头开始创建可用于生产环境的Webpack 4配置
- 计算时间差 html,计算时间差的公式
- iOS内存分配与五大区域
- 小程序前后台切换运行机制
- 我tcp可是铁齿金不换,诚实可靠小郎君——谈谈可靠数据传输服务
- iOS开发笔记--基于面向协议MVP模式下的软件设计
- 2022CFA一级二级三级视频网课资源
热门文章
- fundamentals\java\Thymeleaf
- lvs-dr集群之vip与dip/rip不在同一网段的实验环境设计及配置实现
- 大一寒假训练:暴力枚举
- Vis-MVSNet: Visibility-Aware Multi-view Stereo Network(IJCV 2022)
- 复化梯形公式求椭圆周长C语言,C语言编程解线性,非线性方程,龙贝格算法.docx
- linux建立ssh、scp互信
- Android使用沉浸式导航栏
- 主要几款跑步APP对比
- 飞凌嵌入式丨NXP MFGTool软件烧录原理
- Grizzly和Netty以及Mina简单性能对比