记一次内存无法回收导致频繁fullgc机器假死的思路
确定挂机 络绎不绝的来不同类型的bug
当bug滚滚而来时,不要怀疑,你的发布的应用基本是不可用状态了。
观察哨兵监控数据,特别是内存打到80%基本就挂机了,或者监控数据缺失也基本是挂机了。
此时应当马上决断:
- 通知运营暂停操作(大多数是因为后台应用导致的,纯经验猜测,因为你也不可能让外部用户停止操作)
- 重启大多数机器,保留一台机器保存现场(下线机器)。
实例:
- 友品app首页有频率的失败
- 运营提bug,后台导出每次都不可用,其他的偶现不可用
找到原因 把此问题复现出来
根据各方面的反馈,加自身的迭代,找寻线索,积极在预发尝试,以求确定病根。
- 最近上线内容
- 最近使用操作
- 最近超时接口
实例:
见上描述,导出每次不可用,马上在预发复现此问题。
感谢运营的反馈,此处可总结,运营在使用系统过程中出现问题要及时反馈,不要害羞。
确定问题根源
线上一般内存偏大,有6-8G,用jmap下来文件很大,也不易分析。
此时可转换思路,创建一个干净的环境,调试此固定逻辑。
这里的问题是线上数据怎么来?
- dubbo 直连(不建议)
- 通知运维导出线上数据
搭建本地环境,调试固定逻辑:
- 相关业务逻辑迁移到本地(线上数据来源是2,此时需要导入数据,封装dao)
- 本地设置 -xms-xmx为20M(设置本地使用内存)
- jmap -histo 77710 >./Downloads/15.log 导出内存文件查看内存消耗
- 分析并解决,如果是自己责任内则解决,否则抛出(纯能力和经验)
实例:
在本地环境调试后发现导出正常,20M内存可以支撑导出37万条数据没有问题。
此时回过头去看线上逻辑代码,比本地多一个文件加水印,此时修改代码,再文件生成后打印一条日志,部署预发。
发现文件可以生成,但文件加水印迟迟未结束。
去掉文件加水印后部署预发,导出正常。
此时排查出问题出在文件加水印,此为中间件的工具,故而不做解决,直接去掉加水印提测。并报告问题给相应人。
总结
- 判断是否挂机
- 通知运营暂停操作
- 重启大多数机器,保留一台机器保存现场
- 找到那个操作引起的此现象
- 转为本地调试,找寻问题根源
- 解决或抛出
转载于:https://www.cnblogs.com/wade-luffy/p/11043551.html
记一次内存无法回收导致频繁fullgc机器假死的思路相关推荐
- GC overhead limt exceed 导致的java进程假死
2019独角兽企业重金招聘Python工程师标准>>> 1.现象 线上后台任务的java进程处于假死状态 2.排查过程 1.查看假死的进程ID ps -ef | grep sku 2 ...
- java 线程耗尽_关于线程耗尽导致请求超时系统假死
线程耗尽:我们知道java程序中,所有计算都是通过线程来执行的,同时我们为了能够重复利用线程,避免频繁创建线程而消耗资源,一般我们都使用线程池,既然是池,那就表明线程是有限的,既然是有限的就会有耗尽的 ...
- java 线程耗尽_关于线程耗尽导致请求超时系统假死的思考
线程耗尽:我们知道java程序中,所有计算都是通过线程来执行的,同时我们为了能够重复利用线程,避免频繁创建线程而消耗资源,一般我们都使用线程池,既然是池,那就表明线程是有限的,既然是有限的就会有耗尽的 ...
- winform程序内存不足或假死的问题
最近一直在写一个winform程序,对各类文档文件,以及压缩包的内容进行关键字检测. 模型出来之后,执行了一下,发现连续测试后,会有内存不足的问题,导致程序面假死.脑袋懵逼了两天. 回头看我的变量容器 ...
- 内存很空却频繁gc_记一次不太成功的频繁 full gc 排查过程
上周自己负责的一个应用出现频繁full gc的问题,不得不尝试优化一下.第一次做这种事只能先看看网上的文章,然后亲自尝试怎么去完成减少full gc的频率,降低young gc的频率这一目标.虽然最终 ...
- 硬核分析|腾讯云原生OS内存回收导致关键业务抖动问题
实战系列: 精选各种常见的代表性实际问题,分享一步一步思考和解决方法,梳理整个问题脉络,可以学习到解决问题各种技巧和通用技能,锻炼解决问题思维能力,让大家成为解决问题的高手: 往期文章推荐: 一个刁钻 ...
- 内存回收导致关键业务抖动案例分析-论云原生OS内存QoS保障
蒋彪,腾讯云高级工程师,10+年专注于操作系统相关技术,Linux内核资深发烧友.目前负责腾讯云原生OS的研发,以及OS/虚拟化的性能优化工作. ## 导语 云原生场景,相比于传统的IDC场景,业务更 ...
- Android长时间后台运行,内存被回收再次打开导致APP崩溃(APP在后台被系统回收后,如何重新启动?)
问题: 因为手机内存不足的时候,会回收一些APP所占内存,如果被回收的APP中有全局变量,那么再次进入这个APP就会导致异常报错: 原因: 因为Application是全局变量,内存不足的时候会被回收 ...
- 计算机缺乏内存将无法运行,电脑内存损坏,导致计算机频繁重启,无法正常运行?好的内存条...
内存损坏,导致计算机频繁重启,无法正常运行 对于此类故障,先直接更换内存,看故障是否还仍然出现.如果故障消失,就可以直接判断是内存故障.如果故障依旧,那就需要按第五种故障的排除方法,重新安装操作系统, ...
- 记一次内存泄漏问题的排查经历
源宝导读:随着系统越来越庞大,越来越复杂,疑难杂症问题也越来越多.本文将介绍明源研发协同平台团队针对一次内存泄露问题的排查过程和技术探索. 一.背景 内存泄漏,一个说大不大说下不小的瑕疵.作为开发者, ...
最新文章
- 博客已从百度空间搬家到此
- uni-app实现上拉加载更多
- 电脑无internet访问_电脑中的代理服务器怎么设置 代理服务器设置方法 - 操作系统...
- fedora下安装pps
- 使用indexOf()算出长字符串中包含多少个短字符串
- 信息学奥赛C++语言: 选夏令营旗手1
- Python中的join函数
- You have tried to change the API from what has been previously approved
- UWF自定义设置与命令管理
- 小样本分割:构建数据集Pascal-5i
- 源码安装Zabbix5.0监控系统
- msvcr120.dll丢失如何修复
- mysql安装 张宴_Linux_centos5 源码安装Nginx + mysql + apache + php的方法,主要依照的是张宴的一篇博文 - phpStudy...
- ESP32--WIFI
- html如何添加音乐火狐,电脑如何将HTML书签导入进火狐浏览器中
- anaconda 上实现Tensorflow MASK R-CNN Demo Windows (CPU版)
- linux amd显卡双屏,Ubuntu14.04安装AMD显卡驱动双屏显示器完全解决方案
- STC15w4k32s4单片机 串口通信
- 深度聚类相关(三篇文章)
- 使用MD.ai标注医学图像及covid-19数据集标注
热门文章
- TCP连接保活之Keepalive
- c语言转意字符 s,第2章 C语言初探:12、C语言转义字符
- LitJson不支持float
- 设置角速度及生成四元数及利用刚体
- zeromq源码分析笔记之架构
- 微服务发展的历史_三位一体的中台、微服务和云原生,揭示了软件架构的最新发展趋势...
- unity animator 动画 结束后保持位移_Unity动画系统详解9:Target Matching是什么?
- 2.4配置自定义拦截器
- Java I/O系统之处理流类型
- [渝粤教育] 西南科技大学 管理会计JG211012 在线考试复习资料2021版