FE堆外内存泄漏

heap 大小并不高的,上面截图的使用的Java8,另外一个同版本集群是在K8s上搭建的,默认镜像是Java11,一样的情况,都有宿主机内存使用远超JVM堆内存的现象,和Java版本并没有关系。

上周把FE的JVM -XMX堆总内存,从12G下调到了8G,通过最近一周多的观察,机器的内存前期确实是在一直上涨的,通过TOP命令查看,最终RES值稳定在了9.4G左右,占比总机器内存的63%左右。 所以,对于机器总内存是16G的话,JVM不能设置的太高,建议小于10G,否则很容易机器内存利用率超过90%

max heap 我调整到8G,经过一周多的运行,RES 最终会上涨了9.4G。

执行这个命令,回报这个老师,是不是已经内存泄露了老师?

有instert常驻任务,内存升高很离谱

这个遇到过么?

用jdk的jmap命令获取fe的heap内容如下:
jmap -dump:format=b,file=fe_dump.hprof <fe_pid>
然后用Elipse Memory Analyzer对堆文件fe_dump.hprof进行分析,找出哪里存在内存泄漏。

老师这样的问题怎么解决?

sudo -u <fe进程的执行用户> jmap 。。。。。。。<fe_pid>

自己就是root用户老师

用sudo -u 把执行jmap的用户改为执行fe的用户。

这个没有设置老师,还发现这个隐藏文件无缘无故的没有了,.java 打头的 正常有的是可以执行的

老师麻烦解决下这个问题,仍然是不能执行,用户是root,拥有最高权限

jmap执行不了无非两种原因:
1、执行jmap的用户和启动JVM进程的用户不是同一个用户;
2、执行的jmap和启动JVM进程的java不是在同一个JDK下(即它们的版本不一致)。

从这两个方面去检查一下。
你也可以用jps看看能不能找到FE的JVM进程id,如果能找到执行jmap就不会有问题,如果找不到执行jmap就有问题。