im-server
im-server copied to clipboard
IM Server 怀疑内存泄露的问题
IM Server每次重启后运行几天,内存会突飞猛涨(以一种不正常的趋势,前几天可能只有3 4个G,到第三四天可能会在半天内涨几个G)引带CPU使用率居高不下,应该也不是性能不足导致的,因为重启后每次都还是能很稳定的运行几天。 这个问题应该怎么解决或者排查?
jmap的内存详细文件不好发,我们通过jmap -histo PID > log.txt导出了一列表你们可以看看 log.txt
这个是jmap -heap的实时内存使用情况查看
上面的信息看到是正常的,只占用了5.5GB内存,还有15GB的内存空闲。可以在出现问题时查一下堆内存占用情况
根据之前邮件沟通的情况,可能是堆外内存泄漏导致的,启动命令加上 -Dio.netty.leakDetectionLevel=advanced 看看有没有堆外泄漏的日志。
还有你们的环境是什么情况,是什么操作系统,jdk的版本是什么
嗯 这个问题先不关闭 我这边再观察一段时间给你们足够判断的数据
今下午到今晚上从8G到15G了,启动命令那个日志要等下次了,这次先给你们一些目前能看到的数据。
这个是服务器内存使用情况
附件是jmap -histo PID > log.txt导出的最新列表,可以和下午发给你们的做一下对比 log.txt
这个是jmap -heap看到的数据
服务器是16核32G,Xmx 设置的20G,Xms 设置的2G 服务器只运行了一个IM服务,所以占用内存基本上只有IM服务,但是G1看只占用了6.8,实际内存却使用了15G
嗯,上面这个图看只占了6.8G,可能是堆外的内存泄漏,等你们抓个日志再看看
还有你们的环境是什么情况,是什么操作系统,jdk的版本是什么
这个是什么情况,特别是jdk的情况?
还有你们的环境是什么情况,是什么操作系统,jdk的版本是什么
这个是什么情况,特别是jdk的情况?
操作系统是ubuntu,jdk版本是jdk1.8.0_391
怎么看那个启动命令后的错误日志?我运行了2天,现在看到一个 ERROR [messages15] (MemoryMessagesStore.java:1894) - error!!!!! 这个错误
这个没有关系,可以不用管
根据之前邮件沟通的情况,可能是堆外内存泄漏导致的,启动命令加上 -Dio.netty.leakDetectionLevel=advanced 看看有没有堆外泄漏的日志。
查一下这几天的所有日志,搜索一下 LEAK 看看有没有这个字段
看了几十个日志,都没有搜索到这个字段,但是今天内存一下就从3到8G了,会不会是你们在的对应处理的时候没有加上这个打印?而且加上这个命令后,CPU使用率明显比之前高一些。
你可以查一下netty堆外内存泄漏相关信息,如果开启了上面那个开关,在第一次泄漏时会打印,但后面不会再打印,所以需要找一下最早的那些日志。CPU明显比之前高应该是这个开关在工作
你们有没有动过jvm的参数?
你们有没有动过jvm的参数?
只是改过运行内存
从前面提供的jmap信息看,实际占用物理内存远大于jvm内存,只能怀疑是堆外内存的泄漏,可以在下次重启时,按照 https://blog.csdn.net/fxh13579/article/details/104754340/ 这个说明抓一下 NMT信息