zoukankan      html  css  js  c++  java
  • netty优化学习积累+++++++

    一、

    c/s-Handler在需要发送消息时,不一定必须调用writeandFlush(),如果对于一些零碎的消息都writeAndFlush(),那么多次频繁的调用对应多次的syscall系统调用,如何减少系统调用提高效率?

    write()函数,对于多次要发送的零碎的消息都采用write()函数,这样只会把消息gather汇聚起来,放到缓冲区中,

    最后一个flush()函数,会将缓冲区中汇聚的多方消息全部整合发送,减少了系统调用syscall.

    https://stackoverflow.com/questions/27498428/implementing-group-flush-in-server-side-netty-handler

    二、

    1) If the client is only interested in sending, not in receiving, you can always disable reading from channel like below

    channel.setReadable(false);

    2) You can increase the throughput very easily by having multiple client channels per client, and also it can scale too.

    3) and you can do following tweaks to improve the performance in general (for read/ write)

    • Its better to have a SEDA like pipline by adding a EXecutionHandler with OrderdMemoryAwareThreadPoolExecutor, (with min, max channel memory with optimal value)

      bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
          @Override
          public ChannelPipeline getPipeline() throws Exception {
              return Channels.pipeline(
                      executionHandler1,//sharable
                      new MessageDecoderHandler(),
                      new MessageEncoderHandler(),
                      executionHandler2,//sharable
                      new BusinessLogicHandler1(),
                      new BusinessLogicHandler2());
          }
      });
    • Setting the writeBufferHighWaterMark of the channel to optimal value (Make sure that setting a big value will not create congestion)

      bootstrap.setOption("writeBufferHighWaterMark", 10 * 64 * 1024);

    • Setting the SO_READ, SO_WRITE buffer size

      bootstrap.setOption("sendBufferSize", 1048576); bootstrap.setOption("receiveBufferSize", 1048576);

    • Enabling the TCP No delay

      bootstrap.setOption("tcpNoDelay", true);

    •       

  • 相关阅读:
    [置顶] 怎么对待重复的代码
    AIX和Linux中wtmp的不同处理方式
    Visio 下载,及密钥
    全局变量和局部变量
    UNIX网络编程--IPV4 IPV6 ICMPV4 ICMPV6
    Android XML文档解析(一)——SAX解析
    rnqoj-30- [stupid]愚蠢的矿工-树形DP
    linux 文件内容的复制
    主流视音频平台参数
    FTP原理
  • 原文地址:https://www.cnblogs.com/CreatorKou/p/11673645.html
Copyright © 2011-2022 走看看