如果Netty Channel为“返回false”,数据将在哪里排队



从Netty API中,它表明如果istrable return false,请求将排队。我能知道该请求将在哪里排队吗?在哪种情况下,队列可能已满并引起OOM问题?

以下是iStrable()

的文档

当且仅当I/O线程立即执行请求的写操作时,才返回true。当此方法返回false时,提出的任何写请求都排队排队,直到I/O线程准备好处理排队的写请求。

https://netty.io/4.1/api/io/netty/channel/channel.html#iswritable--

它将在Netty维护的内部缓冲区中排队。为了避免系统运行,您必须覆盖ChannelInboundHandlerchannelWritabilityChanged方法并进行背压处理。

在这里,您可以使用channelautoread配置来减慢入站数据的读数,并如下所述手动读取请求。或者,如果您在其他线程上写作,则可能需要阻止该线程。

最新更新