• 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); 
     } 
    

      

  • 相关阅读:
    Lua获取当前时间
    标准库
    Cocos2d-x retain和release倒底怎么玩?
    lua 中处理cocos2dx 的button 事件
    探讨把一个元素从它所在的div 拖动到另一个div内的实现方法
    从 ie10浏览器下Symbol 未定义的问题 探索vue项目如何兼容ie低版本浏览器(ie9, ie10, ie 11 )
    setTimeout里无法调用鼠标事件的event
    浅谈HTTP缓存以及后端,前端如何具体实现HTTP缓存
    window7电脑git设置快捷命令
    从获取点击事件根元素谈 target和currentTarget
  • 原文地址:https://www.cnblogs.com/allenhaozi/p/11416817.html
Copyright © 2020-2023  润新知