如何用慢速客户端限制 netty 服务器?

How to throttle netty server with slow client?

为了防止 riemann server when clients do not read ACKs properly, I have implemented some logic 中的 OOME 在变得不可写时关闭通道,假设这是由客户端造成的 reading/ACKing 数据包不够快。

但是,这也会在发送大型查询结果时关闭通道,这可能是因为服务器试图以比通过 TCP 发送结果更快的速度写入结果。在我的脑海中,我认为处理这种情况的最好方法是设置一些写入超时,使用 WriteTimeoutHandler.

netty 中是否有一些已知的标准模式来处理这种情况?

基本上你会停止写一次 Channel.isWritable() returns false 并在它再次 returns true 时重新开始。您可以通过覆盖 ChannelInboundHandler.channelWritabilityChanged(...).

的更新来通知您