Troubleshooting系列-DUBBO中间版本导致应用频繁Fullgc的问题定位分析

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

一台机器频繁fullgc,每分钟一次。通过分析发现dubbo的NettyChannel存在内存泄露问题,怀疑是dubbo版本不兼容或老版本有问题。先重启应用,减少堆中NettyChannel占用。源码分析发现NettyPortUnificationServerHandler没有处理channelInactive或exceptionCaught,已有修复merge。应用中间件升级版本需要保持一致,避免已知问题。

Q&A

为什么我的机器频繁出现fullgc?

机器频繁fullgc可能是由于dubbo的NettyChannel存在内存泄露问题,尤其是在使用老版本dubbo时。

如何临时解决频繁fullgc的问题?

可以通过重启应用来临时解决频繁fullgc的问题,减少堆中NettyChannel的占用。

dubbo版本不兼容会导致什么问题?

dubbo版本不兼容可能导致内存泄露等问题,从而引发频繁的fullgc现象。

如何分析内存泄露问题?

可以通过heap dump分析和使用MAT工具来定位内存泄露问题。

NettyChannel的内存泄露是如何发生的?

NettyChannel的内存泄露可能是由于未处理channelInactive或exceptionCaught,导致CHANNEL_MAP中的引用未被清除。

如何避免应用中间件的已知问题?

保持应用中间件版本一致,并及时升级到最新版本,以避免已知问题的出现。

➡️

继续阅读