• Zookeeper运维总结【转】


    zookeeper VIRT虚拟内存占用过大的问题:

    这个和zookeeper的实现有关,参考这里:http://zookeeper-user.578899.n2.nabble.com/setting-zookeeper-heap-size-td6983511.html

    线上的zookeeper的VIRT有30多G,查看了data, dataLog,总共才几百M。不过一直没什么问题。

    Unreasonable length的问题:

    https://issues.apache.org/jira/browse/ZOOKEEPER-1513
    目前线上用的是345版本,而zookeeper最后的release版本就是这个,有大概一年多没更新了。。
    这个问题有可能是client尝试向zookeeper上放超过1M的数据时,出现的。
    想修改这个默认配置,则可以修改"jute.maxbuffer"这个环境变量。参考:http://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html
    但是我们线上是因为端口扫描工具造成的,这个就相当地诡异了。停止端口扫描工具之后,就没有这个问题了。

    watches数量多的问题:

    dubbo对于每个结点都会watch,导致watch数很多,随便都几千个。
    用wchs,wchc,wchp这些命令可以查看watches的信息,包括总数,每条路径上的watch的数量。每个client的。

    查找不能成功启动原因:

    zookeeper会有很多原因启动不成功,可以通过:
    ./zkServer.sh start-foreground
    来查看启动时报的是什么异常,同时也可以查看运行过程中的异常。
    另外,通过:
    ./zkServer.sh print-cmd
    可以查看zookeeper启动的各个参数,包括java路径等,也可以便于查找问题。

    配置自动清理日志:


    从3.4.0开始,会自动清理日志了,所以这个通常不用配置。

    配置autopurge.snapRetainCount 和 autopurge.purgeInterval 参数。
    保留的snapshop的数量,默认是3个,最小也是3.

    autopurge.snapRetainCount=3
    autopurge.purgeInterval=1
    参考这里:http://nileader.blog.51cto.com/1381108/932156
    另外要注意的是,zookeeper重启会自动清除zookeeper.out日志,所以如果出错要注意先备份这个文件。

    配置zookeeper.out的位置及log4j滚动日志输出

    今天发现线上的bin/zookeeper.out 居然有6G大小。看了下zkServer.sh的代码,这个zookeeper.out实际上是nohup的输出。

    而nohup的输出实际上是stdout,stderr的输出,所以还是zookeepe本身的日志配置的问题。

    研究了下bin/zkServer.sh和conf/log4j.properties,发现zookeeper其实是有日志相关的输出的配置,只要定义相关的变量就可以了。

    Too many connections from 错误

    这个错误是因为同一个IP的zookeeper socket 连接数大于60了。zookeeper server默认限制每个IP最多60个连接。

    这个在测试服务器上出现的,因为测试服务器上太多进程在跑了。。

    修改为:

    maxClientCnxns=150

    http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_advancedConfiguration

    This ZooKeeper instance is not currently serving requests 的错误提示

    当集群里的结点只剩下一台,或者不足半数时,就会出现这个错误提示。

    通常在,只启动第一台zookeeper时会报这个错误。

    在zookeeper server的日志里,会有类似的日志:

    Exception causing close of session 0x0 due to java.io.IOException: ZooKeeperServer not running

    Zookeeper连接速度很慢,Dubbo初始化很慢,应用启动很慢的问题

    发现线下环境迁移到新机器后,应用启动变得很慢,本来十几秒启动的应用,变成几分钟才能启动。

    启动过程没有报错,只是Dubbo的注册信息日志一直在比较慢地刷。

    开始怀疑是网络问题,但是检查了iptables没有开启,用iptraf查看流量,也不高。机器的空闲内存也足够。

    再检查Zookeeper的配置,磁盘的空间,应用的dubbo配置,jvm配置,发现都没有问题。

    没办法了,用jprofiler来测试下,发现“org.I0Itec.zkclient.ZkClient$1.call”,这个调用耗时比较大。

    这样确认是zookeeper本身比较慢,不是应用的问题。

    用下面的zookeeper benchmark工具测试了下性能,发现read速度还可能,create/write速度非常慢,qps只有个位数。

    于是问了下运维的同事,原来新机器是用共享磁盘的,所以速度很慢。

    而zookeeper每次write请求都要写到log日志,并刷到磁盘里,所以非常的慢。

    后来运维的同事换为本地磁盘,一切恢复正常。

    管理工具:

    Zookeeper官方自带的管理员工具:

    http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html 官方的命令行工具可以胜任绝大部分工作了。

    zktop

    https://github.com/phunt/zktop python写的小工具,很有意思

    taokeeper

    项目地址:https://github.com/alibaba/taokeeper
    淘宝出品的一个监控工具,还有可以用脚本来监控的功能。虽然开源了,但是实际上很难用,代码也很难扩展,而且有些jar包是淘宝内部的。
    我修改了下,可以正常使用,代码地址在:https://github.com/hengyunabc/taokeeper
    但是我们线上也没有用这个,线上只有zabbix的监控。

    性能测试相关:

    https://github.com/brownsys/zookeeper-benchmark
    这个工具输出结果比较乱,不过用起来还不错。
    mvn -DZooKeeperVersion=3.4.5 package
    ./runBenchmark.sh test
    然后在test文件夹下,会有生成的信息。主要在zk-benchmark.log这个文件里。

    http://zookeeper.apache.org/doc/r3.4.5/zookeeperOver.html

    http://wiki.apache.org/hadoop/ZooKeeper/ServiceLatencyOverview 自带的文档里有一点,不过貌似没更新过
    http://wiki.apache.org/hadoop/ZooKeeper/ServiceLatencyOverview Hadoop里带的一个测试
    https://ramcloud.stanford.edu/wiki/display/ramcloud/ZooKeeper+Performance
    http://rdc.taobao.com/team/jm/archives/1070 淘宝的一个测试
    ————————————————
    版权声明:本文为CSDN博主「Bill-Zhang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zlfprogram/article/details/78021166

  • 相关阅读:
    android视频录制
    UIWebView 缓存
    (Detected problems with API compatibility(visit g.co/dev/appcompat for more info)
    二、为什么要安装jdk?
    一、java为什么叫java?
    jstl标签
    J2EE(八)——myeclipse开发servlet
    J2EE(七)——myeclipse开发servlet
    J2EE(六)——servlet生命周期
    J2EE(五)——servlet初识
  • 原文地址:https://www.cnblogs.com/paul8339/p/16779007.html
Copyright © 2020-2023  润新知