Troubleshooting系列-DUBBO中间版本导致应用频繁Fullgc的问题定位分析
💡
原文中文,约2400字,阅读约需6分钟。
📝
内容提要
一台机器频繁fullgc,每分钟一次。通过分析发现dubbo的NettyChannel存在内存泄露问题,怀疑是dubbo版本不兼容或老版本有问题。先重启应用,减少堆中NettyChannel占用。源码分析发现NettyPortUnificationServerHandler没有处理channelInactive或exceptionCaught,已有修复merge。应用中间件升级版本需要保持一致,避免已知问题。
🎯
关键要点
- 运维同学发现一台机器频繁fullgc,几乎每分钟一次。
- 通过heap dump分析,发现dubbo的NettyChannel存在内存泄露问题。
- 怀疑是dubbo版本不兼容或老版本有问题,应用版本为dubbo 3.1.1。
- 临时解决方案是重启应用,减少堆中NettyChannel占用。
- 源码分析显示NettyChannel的CHANNEL_MAP可能导致内存泄露,未处理channelInactive或exceptionCaught。
- 在GitHub上发现类似问题,已有修复merge,主要改动是重写channelInactive以移除NettyChannel。
- 总结:后台应用中间件版本需保持一致,及时升级以避免已知问题。
➡️