记一次OOM

news2025/2/24 17:53:34

1,问题描述:

新上了一版代码之后,上游服务请求我们服务失败,报错:“服务不可用”,发现注册中心上服务掉线,查询日志:发现oom:Java heap space,GC overhead limit exceeded。
在这里插入图片描述
在这里插入图片描述
容易发生内存溢出的内存空间包括:PeimanentGeneration space和Heap space。

2,资料收集

OutOfMemoryError: Java heap space 内存溢出的一种,表示由于JVM中堆区不足,导致申请内存的请求无法被满足。通常是因为程序试图分配比堆空间更大的对象,或者是因为内存泄漏,导致程序不断分配内存,不能及时释放不再需要的内存。
OutOfMemoryError: GC overhead limit exceeded 内存溢出的一种,表示执行垃圾收集的时间比例太大,工作时间太少,程序花费了超过98%的时间来进行垃圾回收,而回收的内存少于2%,如果连续多次出现这种情况,就会抛出这个异常。
解决oom的途径:
①增大JVM内存。
②检查程序代码,是否有内存泄漏的地方。

3,解决过程

1,为了不影响上游服务,首先进行服务回滚。
2,检查新上的代码,查看是否有内存溢出的情况。
发现调小了线程池的核心线程数和最大线程数。如果核心线程数太小,可能会导致线程频繁地创建和销毁,增加内存开销
,降低系统性能,但不会导致OOM,而如果这线程池中执行的任务需要大量内存,则也有可能导致OOM。为了验证这个问题
我又将这2个参数改回去了,程序运行一段时间,还是发现有同样的问题,所以这个排除。
3,由于服务启动参数设置了:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/aku-repayment-service
所以当发生oom的时候,系统会自动生成DUMP文件,放在指定路径下。所以分析下这个文件就知道什么地方发生内存泄漏了
什么是DUMP文件?
堆Dump是反应Java堆使用情况的内存镜像,其中主要包括系统信息、虚拟机属性、完整的线程Dump、所有类和对象的
状态等。
使用 Java VisualVM对其进行分析:
在这里插入图片描述
在这里插入图片描述
byte[]过多,发现是字节数组输入流过多,对程序进行分析,发现只有日志输出和http请求会产生字节数组。日志文件没有进行修改过,所以日志是没问题的,所以产生oom的原因是由于那天请求量比较大的时候导致了oom,问了下测试的同事,发现那天在测相关的需求,所以请求得比较频繁,所以导致了此次的oom,调大了JVM内存参数就没有再出现过了。

4,总结

请求过多导致的oom,调大JVM内存就能解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产电容式触控IC的工作原理及应用

国产电容式触控IC采用CMOS工艺,内建稳压和驱动电路,具有高可靠性、高灵敏度、超低功耗、强稳定性、抗干扰能力强、宽工作电压等方面优点,专为取代光感和传统按键开发而设计。 电容式触控芯片 - CT8225是一款使用电容感应式原理设计的触摸芯片…

Linux_基本指令

新的专栏Linux入门来啦!欢迎各位大佬补充指正!! Linux_基本指令导入文件绝对路径与相对路径隐藏的文件指令ls查看stat查看文件属性cd进入路径mkdir创建目录touch创建文件rm删除man查询手册cp复制mv移动cat查看文件morelessheadtail时间相关的…

redis分布式锁的演变过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、直接添加Redis缓存二、使用setnx执行抢锁过程三、setnx获取锁+设置过期时间四、引入UUID解决误删锁问题五、引入Lua脚本来做删除六、对递归部分优化进行自旋七、添加自旋次数八、改为重入锁,使…

Grafana loki部署及使用及问题处理方法(超详细)

一、下载软件 因为我是本地测试,所以用的windows版本的包,loki服务window版本的安装包下载地址:下载地址,选择 promtail-windows版本的安装包下载地址:下载地址 Grafana服务的下载地址:下载地址 二、配置…

月薪过万的那些人,大部分都是做什么工作的?

三百六十行,行行出状元。不管是什么行业,月薪过万都是有的。只不过有些行业就是比较容易出现月薪过万,换句话说,就是这个行业内出现月薪过万的人数比较多。先说结论,综合来看月薪过万的这部分90后,大部分集…

JavaScript语法学习--《JavaScript编程全解》

《JavaScript编程全解》 JavaScript琐碎基础 0.前言 1.RN: react native是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,支持iOS和安卓两大平台。 2.ts与js js:是弱…

[CentOS] Dell塔式服务器安装CentOS7

主要基于 UEFI GPT方式引导,LegacyMBR的方式这里不做讨论 目录基础信息BIOS设置U盘制作启动盘启动安装注意事项基础信息 CentOS7.5UltraISO 9.3.x机型:DELL OPTIPLEX 7080机型: DELL OPTIPLEX 5090机型: DELL OPTIPLEX 300U盘&a…

ChatGPT 未来会造成大量职业的裁员和失业吗?

大家好,小编来为大家解答以下问题,一个有趣的事情,一个有趣的事情,今天让我们一起来看看吧! 1、chatGpt来自那个国家? ChatGPT是一种聊天机器人技术,它来自美国,由OpenAI公司开发。…

HR管理系统的五大选择特点

市面上的HR管理系统那么多,难免选的眼花缭乱。我们的建议是,就根据你们自己的需求来,满足自身需求的,才是最好的。当然价格页得考虑。如果HRMS与你的组织需求不一致,则会妨碍有效的HR管理。跟着下面的步骤去选一款HR产…

第四章 - 基础查询语句(select,distinct,limit)

基础查询语句,select,distinct,limit查询单列数据查询多列数据查询所有数据去重查询(distinct)限制查询结果(limit)查询单列数据 在列名和函数没有冲突的时候可以不用加前后的比如有时候时间的…

微信小程序|基于小程序+C#制作一个超酷的个人简历

你还在用以前的方式投简历吗?趁着金三银四来临之际,跟随此文使用小程序制作一个便携超酷的个人简历,高调炫技,愉快的收offer吧! 一、小程序

内存泄漏检测组件 -- mtrace

目录 用mtrace检测内存泄漏 使用addr2line定位代码 C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 用mtrace检测内存泄漏 描述: mtrace()函数为内存分配函数安装hook(钩子)函数【malloc()、realloc()、memalign()&am…

Python语言零基础入门教程(十九)

Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。 1、异常处理 2、断言(Assertions) python标准异常 什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生&…

【原创】java+jsp+servlet学生信息管理系统(jdbc+ajax+filter+cookie+分页)

一直想写一个比较基础的JavaWeb项目,然后综合各种技术,方便Java入门者进行学习。学生信息管理系统大家一般接触的比较多,那么就以这个为例来写一个基础项目吧。 需求分析: 使用jspservletmysql开发的学生信息管理系统&#xff0…

Git 基本操作之Git GUI界面和git命令行如何选择

1. 为啥推荐使用git命令行 我发现公司有很多的同事都喜欢使用git的GUI界面工具,喜欢鼠标点点点就完成了代码的提交,这种方式的确是比较简单便捷,但是却存在风险。先上一个事故给大家醒醒脑。 VScode Git 界面操作引发的惨案 上面的惨案是VS…

抖音共创是什么?怎么操作全集教程!

抖音共创是什么?怎么操作全集教程!#抖音合集#抖音共创#抖音seo , 开通抖音合集功能的好处 #抖音合集怎么弄 #抖音合集创建指南 #抖音合集功能 #抖音seo 抖音合集的功能真的是太有用了,视频播放量低的,没有搜索流量的…

深度解析UG二次开发装配的部件事件、部件原型和部件实例

做UG二次开发快一年了,每次遇到装配的问题涉及到部件事件、部件原型和部件实例还是一头雾水,什么是实例,什么是原型这些专业术语等等。 针对这个问题,今天专门写了一篇特辑,结合装配实例深度剖析装配过程中的的所有参数…

chatgpt聊天时都有过哪些高情商回答?

这篇文章主要介绍了chatpartner,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 1、chatGPT是什么意思? ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天…

这样羞辱?6年测开经验去面试阿里,被按在地上疯狂摩擦...

前几天我朋友跟我吐苦水,这波面试又把他打击到了,做了快6年软件测试员。。。为了进大厂,也花了很多时间和精力在面试准备上,也刷了很多题。但题刷多了之后有点怀疑人生,不知道刷的这些题在之后的工作中能不能用到&…

入行测试已经4年了 ,进华为后迷茫了3个月,做完这个项目我决定离职....

转行测试 我是大专非计科,我转行之前从事的工作是商场管理,努力了4年左右的时间才做到楼层经理,但是工资太低并且事情太多,薪资才6K。 更多的是坚定了自己的想法,我要改变自己 恰好有几个大学同学在互联网公司工作&a…