2

我正在使用最新版本的 Netty-4 CR6 尝试我的应用程序。在我的应用程序的服务器端,我在大约 200 个请求/秒的负载下收到以下错误:

io.netty.handler.codec.DecoderException: java.lang.OutOfMemoryError: Direct buffer memory
        at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:393)
        at io.netty.handler.codec.ByteToMessageDecoder.messageReceived(ByteToMessageDecoder.java:129)
        at io.netty.channel.DefaultChannelHandlerContext.invokeMessageReceived(DefaultChannelHandlerContext.java:379)
        at io.netty.channel.DefaultChannelHandlerContext.fireMessageReceived(DefaultChannelHandlerContext.java:364)
        at io.netty.channel.DefaultChannelHandlerContext.fireMessageReceived(DefaultChannelHandlerContext.java:347)
        at io.netty.channel.DefaultChannelPipeline.fireMessageReceived(DefaultChannelPipeline.java:780)
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:92)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:489)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:464)
        at io.netty.channel.nio.NioEventLoop.run(NioEventL

它是一个文件传输应用程序。我正在使用带有 Netty-4 CR6 jar 的客户端和服务器构建。在每个请求中,客户端创建一个 WebSocket 连接,传输一个大约 850KB 的文件,最后通过发送 CloseWebSocketFrame 关闭连接。

4

1 回答 1

0

看看下面的错误。你可能会遇到它。这里的选项是
1.msgs.releaseAll()在您的上游处理程序中使用。
2. 使用io.netty.channel.SimpleChannelInboundHandler类作为您的消费处理程序。然后你不需要使用releaseAll逻辑,因为它在内部由 netty 照顾你。

于 2013-06-28T13:24:44.437 回答