SpringCloud Gateway堆外内存溢出排查 - 详解
2026-01-02 09:19 tlnshuju 阅读(2) 评论(0) 收藏 举报生产环境网关模块偶发的 OutOfDirectMemoryError 错误排查
io.netty.util.internal.outofDirectMemoryError: failed to allocate 16777216 byte(s) of direct memory (ued: 469762055, max: 477626368)

SpringCloudGateway 是基于 WebFlux 框架构建的,而 WebFlux 框架底层则应用了高性能的 Reactor 模式通信框架 Netty。
网上查阅相关资料,有些场景是因为堆外内存没有手动 release 导致
应该加上代码
DataBufferUtils.release(dataBuffer);

测试环境可能通过加上-XX:MaxDirectMemorySize=1m 来模拟重现。

测试多次请求,不加DataBufferUtils.release(dataBuffer)的情况下,bug复现
而加了DataBufferUtils.release(dataBuffer)的情况下,bug不再出现。
浙公网安备 33010602011771号