首页 > 系统相关 >记录一次线上内存溢出排查详细过程

记录一次线上内存溢出排查详细过程

时间:2024-01-16 15:57:14浏览次数:31  
标签:请求 查看 10M 配置 排查 内存 溢出 线上

现象

生产上频繁出现调用异常的信息

查询生产服务器日志

初步评估:查看了这个方法没有性能瓶颈,应该是服务本身出现问题、后来找运维要了一下线上dumpfile文件:内存溢出、猜测可能存在内存泄漏

MAT初步排查

 从第一个页面来看,内存到达1.7G出现内存溢出

问题一:为什么1.7G就溢出了,问过刘罕生产环境配置的大小是8G

查看项目启动脚本

 查看项目的ymal文件中的配置

 查询一些资料表面如果没有配置Xmx和Xms会出现最大使用内存是机器内存的1/4,配置8G实际虚拟机最大使用内存不到2G、结论不谋而合

 

问题二:内存溢出的根源

查看直方图

 

从图中可以看出byte数组占比高达1.6G左右、但是看不出来被谁引用

 

从这里看、短时间出现大量查询费用单的请求每次请求的大小为10M

每个请求里面都有一个近10M的数组

 这里出现大量Http11OutputBuffer对象、并且大小10M、查看一下源码

 每次请求创建一个Http11OutputBuffer

JDK8默认8K

查看了一下线上配置

结论:

1.由于没有配置Xmx和Xms

2.server.max-http-header-size配置10M过大导致所有服务每次请求最低10M传输

上述两点导致内存溢出

建议:

1.配置Xmx和Xms

2.server.max-http-header-size减小到合理的范围、尽量减小请求头中的数据

 

 

 

 

标签:请求,查看,10M,配置,排查,内存,溢出,线上
From: https://www.cnblogs.com/andy-alone/p/17967848

相关文章

  • wa很高之排查
    现象:设备按照当前空闲情况是不存在频繁读写磁盘的操作的,但是wa很高又证明在频繁读写主要判断指标:%us过高,则可以在对应服务的线程ID查看具体详情,是否存在死循环,或者长时间的阻塞调用。%sy过高,则先使用strace定位具体的系统调用,再定位是哪里的应用代码导致的。%si过高,则......
  • 提高代码效率的6个Python内存优化技巧
    当项目变得越来越大时,有效地管理计算资源是一个不可避免的需求。Python与C或c++等低级语言相比,似乎不够节省内存。但是其实有许多方法可以显著优化Python程序的内存使用,这些方法可能在实际应用中并没有人注意,所以本文将重点介绍Python的内置机制,掌握它们将大大提高Python编程技能......
  • cpu过高什么原因?怎么排查?
    运行大型程序或应用程序:当计算机运行大型程序或应用程序时,CPU需要处理更多的数据和指令,因此CPU占用率会相应地增加。病毒或恶意软件:某些病毒或恶意软件会占用计算机的CPU资源来执行恶意任务,例如加密文件或执行网络攻击。软件或驱动程序错误:某些软件或驱动程序可能存在缺陷,导致C......
  • 内存泄漏跟内存溢出区别?
    内存溢出指程序使用超过其分配的内存空间,通常程序没有正确的管理内存,比如是一次性加载过多的数据到内存中现象:导致程序无法获取所需要内存中断或者崩溃处理方式:通过优化程序的数据结构和算法,比如分次读取数据或文件,而不是一次性读取所有数据。      内存泄漏指的是......
  • otterctf内存取证-----4 - Name Game
    otterctf内存取证-----4-NameGame看到这题目,看看是不是浏览器登录,无果。这里似乎没有跟题干相关的答案。游戏登录了,登录进程里是不是包含账户信息,把进程dump下来看看。频道后面是不是账户名字,果然猜对了,上面都是假想自己做出来的,感觉蛮有意思的,所以记录下来,进程里居然也能藏历......
  • 内存取证1-进程
    otterctf内存取证-----4-NameGame看到这题目,看看是不是浏览器登录,无果。这里似乎没有跟题干相关的答案。游戏登录了,登录进程里是不是包含账户信息,把进程dump下来看看。频道后面是不是账户名字,果然猜对了,上面都是假想自己做出来的,感觉蛮有意思的,所以记录下来,进程里居然......
  • 如何定位和优化程序CPU、内存等性能之巅
    摘要性能优化指在不影响系统运行正确性的前提下,使之运行得更快,完成特定功能所需的时间更短,或拥有更强大的服务能力。本文将介绍性能优化的基本概念以及如何定位和优化程序中的CPU、内存和IO瓶颈。引言随着计算机系统的日益复杂和应用场景的多样化,性能优化对于提升系统效率和用......
  • Net 高级调试之十六:平台互用性及P/Invoke和内存泄漏调试
    一、简介今天是《Net高级调试》的第十六篇文章,也是这个系列的最后一篇文章了。既然是最后一篇文章,我需要在这里说明一下,我当前的这个系列,不是针对《Net高级调试》这本书来的,而是根据“一线码农”的视频做的这个系列。当然了,他的视频是根据《Net高级调试》这本书来的,内......
  • 关于echarts+vue频繁刷新的造成的内存增长问题
    前言关于解决echarts+ws多次数据刷新渲染,内存增长溢出的尝试。记录一下,便于下次使用有参考方法关闭echarts动画tooltip的动画设置为false。(echarts动画会缓存,通过快照可以看出)tooltip:{axisPointer:{animation:false,//很重要!},......
  • 数组 数组的内存 面向对象 this
    静态初始化全写:数据类型[]数组名=new数据类型{值};简写:数据类型[]数组名={值};动态初始化数据类型[]数组名=new数据类型[数组长度];数组不赋值时会默认初始化一个值整数:0小数:0.0字符:"/uoooo"(显示出来就是一个空格)布尔:FALSE引用数据类型:null数组的内存堆内存......