发现问题
公司服务器监控报警,提示服务器可用内存不足30%
利用平台监控趋势图观察(事后截的图,不是当时现场监控):
上线新版本程序后系统内存剩余量少于30%,触发报警。配置为2c/4g/50g云主机,系统中仅部署了上线的应用程序。
利用top指令观察进程占用的内存情况
发现java进程占用3g+内存……
问题排查
利用jdk jmap工具dump出当前jvm内存镜像到本地win下分析
jmap -dump:live,format=b,file=/tmp/dump.txt 进程号 当前存活对象
jmap -histo:live 进程号 直接打印,对象太多看不全
jmap -dump,format=b,file=/tmp/dump.txt 进程号 所有对象
sz /tmp/dump.txt 转存到本地
800M 很慢
排查工具
jdk自带jvisualMV
导入转储的镜像