美文网首页
关于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