Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IM Server 怀疑内存泄露的问题 #683

Open
doralines opened this issue Jan 11, 2024 · 18 comments
Open

IM Server 怀疑内存泄露的问题 #683

doralines opened this issue Jan 11, 2024 · 18 comments

Comments

@doralines
Copy link

IM Server每次重启后运行几天,内存会突飞猛涨(以一种不正常的趋势,前几天可能只有3 4个G,到第三四天可能会在半天内涨几个G)引带CPU使用率居高不下,应该也不是性能不足导致的,因为重启后每次都还是能很稳定的运行几天。
这个问题应该怎么解决或者排查?

@doralines
Copy link
Author

jmap的内存详细文件不好发,我们通过jmap -histo PID > log.txt导出了一列表你们可以看看
log.txt

@doralines
Copy link
Author

image
这个是jmap -heap的实时内存使用情况查看

@heavyrain2012
Copy link
Contributor

上面的信息看到是正常的,只占用了5.5GB内存,还有15GB的内存空闲。可以在出现问题时查一下堆内存占用情况

@heavyrain2012
Copy link
Contributor

根据之前邮件沟通的情况,可能是堆外内存泄漏导致的,启动命令加上 -Dio.netty.leakDetectionLevel=advanced 看看有没有堆外泄漏的日志。

@heavyrain2012
Copy link
Contributor

还有你们的环境是什么情况,是什么操作系统,jdk的版本是什么

@doralines
Copy link
Author

嗯 这个问题先不关闭 我这边再观察一段时间给你们足够判断的数据

@doralines
Copy link
Author

今下午到今晚上从8G到15G了,启动命令那个日志要等下次了,这次先给你们一些目前能看到的数据。
这个是服务器内存使用情况
image

附件是jmap -histo PID > log.txt导出的最新列表,可以和下午发给你们的做一下对比
log.txt

这个是jmap -heap看到的数据
image

服务器是16核32G,Xmx 设置的20G,Xms 设置的2G
服务器只运行了一个IM服务,所以占用内存基本上只有IM服务,但是G1看只占用了6.8,实际内存却使用了15G

@heavyrain2012
Copy link
Contributor

嗯,上面这个图看只占了6.8G,可能是堆外的内存泄漏,等你们抓个日志再看看

@heavyrain2012
Copy link
Contributor

还有你们的环境是什么情况,是什么操作系统,jdk的版本是什么

这个是什么情况,特别是jdk的情况?

@doralines
Copy link
Author

还有你们的环境是什么情况,是什么操作系统,jdk的版本是什么

这个是什么情况,特别是jdk的情况?

操作系统是ubuntu,jdk版本是jdk1.8.0_391

@doralines
Copy link
Author

怎么看那个启动命令后的错误日志?我运行了2天,现在看到一个 ERROR [messages15] (MemoryMessagesStore.java:1894) - error!!!!! 这个错误

@heavyrain2012
Copy link
Contributor

这个没有关系,可以不用管

@heavyrain2012
Copy link
Contributor

根据之前邮件沟通的情况,可能是堆外内存泄漏导致的,启动命令加上 -Dio.netty.leakDetectionLevel=advanced 看看有没有堆外泄漏的日志。

查一下这几天的所有日志,搜索一下 LEAK 看看有没有这个字段

@doralines
Copy link
Author

看了几十个日志,都没有搜索到这个字段,但是今天内存一下就从3到8G了,会不会是你们在的对应处理的时候没有加上这个打印?而且加上这个命令后,CPU使用率明显比之前高一些。

@heavyrain2012
Copy link
Contributor

你可以查一下netty堆外内存泄漏相关信息,如果开启了上面那个开关,在第一次泄漏时会打印,但后面不会再打印,所以需要找一下最早的那些日志。CPU明显比之前高应该是这个开关在工作

@heavyrain2012
Copy link
Contributor

你们有没有动过jvm的参数?

@doralines
Copy link
Author

你们有没有动过jvm的参数?

只是改过运行内存

@heavyrain2012
Copy link
Contributor

从前面提供的jmap信息看,实际占用物理内存远大于jvm内存,只能怀疑是堆外内存的泄漏,可以在下次重启时,按照 https://blog.csdn.net/fxh13579/article/details/104754340/ 这个说明抓一下 NMT信息

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants