Java进程的内存持续增加原因排查

现象

1. 下图服务器内存持续增加,出现爬坡现象。当增长到99.5%以上之后,服务器出现 IO飙升、CPU飙升等现象,然后重启。

 

2. 查看28600进程,不到一个月时间内,物理内存占用增加了1.4G

 

 3. 查看grafana的JVM监控

 

 

 

 

 

 

 

 

 

 

 

结论

1. top查看,进程增加了1.4G,主要是JVM占用物理内存,增加了1.4G。

2. JVM的Old Gen 增加了1.55G - 314M = 1.24G,是物理内存增加的主要原因。

3. 直到8月17日,JVM的Old Gen 还没有涨到限定的1.8G,所以此进程的RES值还会继续升高,所以出现了内存爬坡现象,当涨到1.8之后,会触发major GC。

4. 直到8月17日,JVM还没有进行过major GC,因为还没有达到Full GC的触发条件。

5. 服务器部署了多个java进程,每个进程的内存设置都比较大,当每个进程的Old Gen都没有达到设定值,每个进程的内存还会继续增长情况下,所有的进程总的内存已经超过了服务器的物理内存,就出现了IO飙升、CPU飙升、服务器重启的情况。

6. 解决方法是限制每个java进程的内存为合理值,所有的进程加起来,不要超过服务器的总的物理内存。

 

posted @   szcj~  阅读(4083)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示