美文网首页
关于Netty中的消息积压

关于Netty中的消息积压

作者: 知止9528 | 来源:发表于2019-01-20 23:10 被阅读2次

场景一:高并发场景下,服务端处理过慢会导致客户端消息积压.

解决方案,除了服务端做流控,客户端也需要做并发保护,防止自身发生消息积压

Netty也提供了高低水位机制

当发送队列待发送的字节数组达到高水位时,对应的Channel就变为不可写状态。
通过对Channel的可写状态进行判断来决定是否发送消息

设置高水位

ctx.channel().config().setWriteBufferHighWaterMark(10*1024*1024);

判断是否可写

if(ctx.channel().isWritebale()){
     msg= .....
     ctx,writeAndFlush(msg)
}

场景二:

网络瓶颈,当消息发送速度超过网络链接处理能力,会导致发送队列积压


场景三

对端读取速度小于已方发送速度,导致自身TCP发送缓冲区满,频繁发送write 0字节,待发送消息会在Netty发送队列中排队。

相关文章

网友评论

      本文标题:关于Netty中的消息积压

      本文链接:https://www.haomeiwen.com/subject/ikofjqtx.html