记一次jvm oom 导致docker容器频繁重启问题排查

应用部署在docker容器中,日志无报错,docker却有多次重启记录,Nginx监控报警

过程:

1.执行top命令查看内存占用情况

  

 

 很干净的容器,只有java进程在运行

2.查看jvm情况

  2.1 查看heap堆大小,可以使用jinfo -flags PID 查看

或者使用jmap -heap PID 查看结果更清晰些

 

   2.2 查看垃圾回收情况jstat -gcutil PID [3s] 每三秒打印一次

 

 

修改启动参数-Xmn 2048m 一般为heap堆大小的1/2或者1/4

常用启动参数 -server -Xmx4000m -Xms1500m -Xmn1024m

 不生效,导出堆文件。使用mat分析内存文件,查看是什么对象,占有内存。http://www.eclipse.org/mat/downloads.php

本次是因为session超时设置为1天,且内网安全扫描,会生成大量session,导致大量session不过期,内存占用一直增加。

将session调整为30min后,解决问题。

posted @ 2020-10-12 16:51  BigWrite  阅读(2109)  评论(0编辑  收藏  举报