應用部署在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后,解決問題。