长连接Netty服务内存泄漏,看我如何一步步捉“虫”解决 | 京东云技术团队
💡
原文中文,约7800字,阅读约需19分钟。
📝
内容提要
本文介绍了京东科技在支付业务中使用Netty框架的长连接服务中出现的内存泄漏问题,并提供了三种解决方式。最终,通过使用方式三解决了内存泄漏问题,从此长连接前置内存泄漏的问题彻底解决。
🎯
关键要点
- 京东科技在支付业务中使用Netty框架的长连接服务出现内存泄漏问题。
- 长连接服务相比短连接轮询策略,具有时效性高、减少链接建立次数和提高系统吞吐量等优势。
- 内存泄漏现象表现为内存缓慢增长,需定期重启服务。
- 通过Digger查询ERROR日志发现ByteBuf未被释放,导致堆外内存泄漏。
- 使用高级泄漏报告定位内存泄漏的具体代码位置。
- 解决内存泄漏的三种方式:手动释放、升级ChannelHandler、使用ReferenceCountUtil.release。
- 最终选择使用方式三,通过ReferenceCountUtil.release解决了内存泄漏问题。
- Netty提供了完整的内存泄漏排查工具和最佳实践,建议在不同级别下进行泄漏检测。
➡️