Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netty 高吞吐量时帧解码器缓冲区损坏_Netty - Fatal编程技术网

Netty 高吞吐量时帧解码器缓冲区损坏

Netty 高吞吐量时帧解码器缓冲区损坏,netty,Netty,我有一个简单的解码器,它扩展了FrameDecoder来解码二进制消息,该消息有一个整数头字段(4字节),表示消息体的长度。在解码实现中,读取前四个字节以获得消息的长度。当缓冲区有“长度”字节时,将创建一个新的缓冲区来保存消息 当系统处于正常负载时,此功能正常工作。然而,有时当吞吐量很高时,我注意到缓冲区被破坏(“长度”有一个很高的值) 使用FrameDecoder是否存在性能限制?有人遇到过这个问题吗?请分享您的想法,看看是什么导致了这一点 更多信息:这主要发生在收到的消息被阻止(等待某些操作

我有一个简单的解码器,它扩展了FrameDecoder来解码二进制消息,该消息有一个整数头字段(4字节),表示消息体的长度。在解码实现中,读取前四个字节以获得消息的长度。当缓冲区有“长度”字节时,将创建一个新的缓冲区来保存消息

当系统处于正常负载时,此功能正常工作。然而,有时当吞吐量很高时,我注意到缓冲区被破坏(“长度”有一个很高的值)

使用FrameDecoder是否存在性能限制?有人遇到过这个问题吗?请分享您的想法,看看是什么导致了这一点

更多信息:这主要发生在收到的消息被阻止(等待某些操作完成)一段时间,然后恢复操作的情况下


messageReceived中的阻塞调用是否存在任何问题?如果有,有什么解决办法吗?请帮我提出解决此问题的建议。

它应该可以正常工作。你使用什么版本?你说的“阻塞”是什么意思?我开发了一个独立的Java服务器来测试这个。这是一个带有解码器和处理程序的简单服务器。解码器从FrameDecoder扩展到解析长度前缀的二进制消息(实现类似于javadoc中提到的IntegerHeaderFrameDecoder)。ServerHandler中的messageReceived函数被阻止5分钟(使用Thread.sleep)。在这个实现中,我注意到流已经损坏(如上所述,length有垃圾值)。您是否可以在netty github问题上打开一个问题,并包括复制此问题的服务器?正在处理nio选择器的工作线程中调用messageReceived()。如果它将被阻止,则不会再接收和可能发送消息。您可以使用异步队列,例如。