主端内存泄露排查
发生时间
2021.3.29,运维反馈主端几个接口499增多。
问题排查
排查几个接口,内部无远程调用,纯内存解析,排除下游接口超时导致。
登录机器发现:
老年代已经被打满,gc停顿导致接口超时
falcon jvm监控发现:老年代从15日开始持续上涨。
问题解决
先重启机器,留一台问题机器排查,dump内存快照,分析内存泄露点。
内存泄露分析
Mat分析发现,guava缓存占用内存3g,具体业务代码是天气接口缓存,此处业务缓存了用户的经纬度作key,使用了refreshAfterWrite缓存失效策略,缓存没有更新的话,key和value一直存在内存,不会过期,用户经纬度每6米变一次,命中率低,导致部分缓存没有失效,最终导致老年代持续上升,最终oom。