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进程的内存为合理值,所有的进程加起来,不要超过服务器的总的物理内存。

浙公网安备 33010602011771号