问题描述

测试环境ZK集群的三个节点中zk1状态虽然是follower,启动也能正常启动(通过telnet也能telnet 2181端口); 无法通过zk客户端去连接2181端口,状态一致是CONNECTING

查看zk集群所有节点状态
/data/zookeeper-new-1/bin/zkServer.sh status
/data/zookeeper-new-2/bin/zkServer.sh status
/data/zookeeper-new-3/bin/zkServer.sh status

得到zk2是主节点

查看各个节点的data数据大小
du -h /data/zookeeper/tmp/zk1/data/version-2/ --max-depth=1
du -h /data/zookeeper/tmp/zk2/data/version-2/ --max-depth=1
du -h /data/zookeeper/tmp/zk3/data/version-2/ --max-depth=1
[appadm@moonmall_Z1 zookeeper]$ du -h /data/zookeeper/tmp/zk1/data/version-2/ --max-depth=1
2.4G /data/zookeeper/tmp/zk1/data/version-2/
[appadm@moonmall_Z1 zookeeper]$ du -h /data/zookeeper/tmp/zk2/data/version-2/ --max-depth=1
7.1G /data/zookeeper/tmp/zk2/data/version-2/
[appadm@moonmall_Z1 zookeeper]$ du -h /data/zookeeper/tmp/zk3/data/version-2/ --max-depth=1
7.3G /data/zookeeper/tmp/zk3/data/version-2/
[appadm@moonmall_Z1 zookeeper]$

结果: zk1节点的数据落后其它节点太多,查看ZK1的配置信息(zoo.conf

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data/zookeeper/tmp/zk1/data
dataLogDir=/data/zookeeper/tmp/zk1/log
# the port at which the clients will connect
clientPort=2181

两个参数需要注意

参数名称 说明
tickTime zk服务器与客户端之间心跳维持的时间间隔。每隔tickTime的时间就会发送一个心跳。
initLimit 允许所有follower与leader进行同步的时间,如果在设定的时间段内,半数以上的follower未能完成同步,集群会再进行一次选举。
syncLimit leader与follower之间的同步时间,如果在设定的时间内未完成同步,它将会被集群丢弃。
解决方案
  1. 调整syncLimit, 如果文件大小相差较大,可以讲时间相应的调大.
  2. 将主节点的文件手动复制到有问题的节点中.
  3. 调整zoo.conf定时清理数据快照信息。减少数据同步信息
autopurge.snapRetainCount=5
# Purge task interval in hours
# Set to "0" to disable auto purge feature
autopurge.purgeInterval=1
  1. 对于集群节点data目录快照文件相差非常巨大。用方法2无法使集群正常工作。(即使集群能够正常启动起来,过不了多久又会停止工作。但是各个节点角色还是正常的)。考虑到之前有个节点总是挂起。可以想到整个集群数据不能保证一致,可以考虑是否重建数据目录。这个需要对整个业务衡量

线上ZK问题排查的更多相关文章

  1. Java线上应用故障排查之二:高内存占用

    搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGen space 2.java.lang.OutOfMemoryError: Java ...

  2. 一次线上OOM故障排查经过

    转贴:http://my.oschina.net/flashsword/blog/205266 本文是一次线上OOM故障排查的经过,内容比较基础但是真实,主要是记录一下,没有OOM排查经验的同学也可以 ...

  3. 线上zk节点报org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:187) at java.lang.Thread.run(libgcj.so.10)

    线上zk做配置管理,最近突然发现两个节点一直在刷下边 java.nio.channels.CancelledKeyException    at gnu.java.nio.SelectionKeyIm ...

  4. java线上应用故障排查之二:高内存占用【转】

    前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查. 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGe ...

  5. 【JVM】线上应用故障排查

    高CPU占用 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux ...

  6. 线上服务器CPU100%排查,Linux进程消耗查看

    线上服务器CPU100%排查,Linux进程消耗查看 1.排查步骤 1.1Linux下排查 1.1.1查消耗cpu最高的进程PID 1.1.2根据PID查出消耗cpu最高的线程号 1.1.3根据线程号 ...

  7. MySQL死锁系列-线上死锁问题排查思路

    前言 MySQL 死锁异常是我们经常会遇到的线上异常类别,一旦线上业务日间复杂,各种业务操作之间往往会产生锁冲突,有些会导致死锁异常.这种死锁异常一般要在特定时间特定数据和特定业务操作才会复现,并且分 ...

  8. K8S线上集群排查,实测排查Node节点NotReady异常状态

    一,文章简述 大家好,本篇是个人的第 2 篇文章.是关于在之前项目中,k8s 线上集群中 Node 节点状态变成 NotReady 状态,导致整个 Node 节点中容器停止服务后的问题排查. 文章中所 ...

  9. mysql innodb引擎 一次线上死锁分析排查步骤

    我们的线上erp系统一天使用人员反映部分数据死活保存不上而且页面操作很慢.开始以为操作数据量大的原因, 后来查看了我们线上的glowroot系统,发现slowtrace中有超长时间的访问,点开查看详情 ...

随机推荐

  1. motion做摄像头(ZC3XX)移动物体监控系列问题

    一:插入摄像头USB没有显示 gspca: video x creat 解决:cd /dev            ls |grep video 进入/dev目录下,运行ls |grep video命 ...

  2. requests模块:请求网页

    请求网页时需要设置对应的headers(请求头) import requests link = 'https://movie.douban.com' headers = {'User-Agent': ...

  3. 个人永久性免费-Excel催化剂功能第57波-一键生成完全组合的笛卡尔积结果表

    在数据库的多表查询中,通常会有各种连接关系,同样地在Excel环境中,也有很大的场景需要用到类似数据库的多表查询,如经典的VLOOKUP就是其中一种类似LEFT JOIN查询的查询效果.在很多时候需要 ...

  4. Hive之函数与自定义函数

    系统自带的函数 1)查看系统自带的函数 hive> show functions; 2)显示自带的函数的用法 hive> desc function upper; 3)详细显示自带的函数的 ...

  5. 在pom.xml中的dependencies点击add怎么没有搜索到相关jar包

    1.eclipse菜单 window-> show view –> other –> Maven 2.在打开的窗口里,右键 local repositories –> loca ...

  6. Git实战

    Git实战 1.Git特点 1.1.Git两大特点 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题. 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器 ...

  7. JAVA 基于TCP协议的一对一,一对多文件传输实现

    最近老师给我们上了多线程和TCP和UDP协议,其中一个要求就是我们用JAVA协议一个基于TCP和UDP这两种协议的一对一文件上传和一对多文件上传. 然后我就开始分析TCP和UDP这两个协议的特点,发现 ...

  8. 15. Java异常处理

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  9. 配置没有问题,虚拟机Ubuntu系统ifconfig没有网卡信息

    如果没有问题,前几天都好好的,突然出现这个问题 sudo ifconfig etho up 其中eth0是我的网卡名称

  10. 遇见Python集合类型

    Python目前有两种内置集合类型,set和frozenset. Ⅰ.两者区别 set是可变的,没有哈希值,其内容可以使用add()和remove()这样的方法来改变,所以不能被用作字典的键或其他集合 ...