记一次线上堆外内存泄漏排查
1、背景
某项目后端服务运行几天后,频繁收到产品、研发同事反馈系统页面提示登录报错等问题,而服务主调方调用接口也出现 502,导致产品系统功能无法使用。
2、顺藤摸瓜
top 命令查看资源使用情况,发现 java 进程使用了超过 4G 的内存,理论上进程使用内存不应该超出 4G 才对,而通过 jmap 命令 dump 堆内存发现,堆内存只使用了 1G 多的内存,因此怀疑是堆外内存出现泄漏。
某项目后端服务运行几天后,频繁收到产品、研发同事反馈系统页面提示登录报错等问题,而服务主调方调用接口也出现 502,导致产品系统功能无法使用。
top 命令查看资源使用情况,发现 java 进程使用了超过 4G 的内存,理论上进程使用内存不应该超出 4G 才对,而通过 jmap 命令 dump 堆内存发现,堆内存只使用了 1G 多的内存,因此怀疑是堆外内存出现泄漏。