zoukankan      html  css  js  c++  java
  • zookeeper globalOutstandingLimit

    这个配置指定了等待处理的最大请求数量的限制(zookeeper.globalOutstandingLimit)

    client发送请求的速度可能会比server端处理的速度快,会导致请求在server端排队,最终(在若干秒内)会使server的内存耗尽。

    为了避免这一点,如果等待的请求数量达到了globalOutstandingLimit,server端会拒绝client的请求。

    但是这个限制不是hard限制。每一个client至少能有一个outstanding请求,否则连接会开始出现超时。

    所以,当达到globalOutstandingLimit之后,只有在没有任何的pending请求时,server才会从client连接读取数据

    为了决定某一台确定的server的限制,可以简单的用这个配置项的值除以server的数量。

    现在没有一种聪明的方式来决定这个值来进行限制,总的说来,这个配置项的值就是outstanding请求的上限。

    实际上,负载无法在server间进行均衡,总有一些server的负载会高一些,即使没有达到上限。


    默认的限制为1000个请求。通常不需要改变这个配置,如果有很多client会发送非常大的请求,你需要调低这个值,但是在实践中通常不需要改变这个值。
    //最大请求堆积数。默认是1000。ZK运行的时候, 尽管server已经没有空闲来处理更多的客户端请求了,但是还是允许客户端将请求提交到服务器上来,以提高吞吐性能。当然,为了防止Server内存溢出,这个请求堆积数还是需要限制下的。 
    (Java system property:zookeeper.globalOutstandingLimit. )

    globalOutstandingLimit 的配置

    export JVMFLAGS="-Xloggc:$ZOOBINDIR/../../logs/zk.gc.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Dzookeeper.globalOutstandingLimit=2000 $JVMFLAGS"
    

    生效, 可以看出 如果设置了2000, 3台机器, 那么每台机器限制是 2000/(3-1) = 1000   

    @Override
     public int getGlobalOutstandingLimit() {
            return super.getGlobalOutstandingLimit() / (self.getQuorumSize() - 1); 
     } 
    

      

  • 相关阅读:
    2019年春季第四周作业
    第三周作业
    第二周作业
    最大值及其下标
    查找整数
    PTA3
    币值转换
    三位老师
    自我介绍
    poj 3278 Catch That Cow(bfs)
  • 原文地址:https://www.cnblogs.com/allenhaozi/p/11416817.html
Copyright © 2011-2022 走看看