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 に答える