1

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

当系统处于正常负载时,这可以正常工作。但是,有时当吞吐量很高时,我注意到缓冲区已损坏(“长度”具有非常高的值)。

使用 FrameDecoder 是否有任何性能限制?有没有人遇到过这个问题?请分享您对可能导致此问题的原因的想法。

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

在 messageReceived 中进行阻塞调用是否有任何问题?如果是这样,是否有任何解决方法?请帮助我提出解决此问题的建议。

4

0 回答 0