2016-05-14 100 views
2

为了防止OOME在riemann服务器当客户端不读的ACK正常,我已经实现some logic当它成为不可写,关闭通道,在假设条件下,这是由客户端引起了不读/ ACKING数据包的速度不够快。如何使用慢客户端来节制netty服务器?

然而,这也将关闭发送大十岁上下的查询结果,当信道,可能是因为服务器尝试写更快的结果比它可以通过TCP发送。从我的头顶开始,我认为处理这种情况的最佳方法是使用WriteTimeoutHandler设置一些暂停写入。

是否有网状已知处理这种情况的一些标准模式?

+0

看起来像这个问题是相关的:http://stackoverflow.com/questions/28862613/throttling-websockets-with-netty-socketio-server – insitu

回答

1

基本上你会停止写入一次Channel.isWritable()返回false,一旦再次回到真正的重新开始。您可以通过覆盖ChannelInboundHandler.channelWritabilityChanged(...)来更新此通知。

+0

谢谢你的提议,这是我想到的东西,但这似乎很复杂在这种特殊情况下,我需要处理一些逻辑来知道哪些答案没有写入。有没有办法在输出缓冲区中放弃响应?最后,我恐怕没有实际的解决办法来做我想做的事情...... – insitu

相关问题