线上ZK问题排查
问题描述
测试环境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之间的同步时间,如果在设定的时间内未完成同步,它将会被集群丢弃。 |
解决方案
- 调整
syncLimit
, 如果文件大小相差较大,可以讲时间相应的调大. - 将主节点的文件手动复制到有问题的节点中.
- 调整
zoo.conf
定时清理数据快照信息。减少数据同步信息
autopurge.snapRetainCount=5
# Purge task interval in hours
# Set to "0" to disable auto purge feature
autopurge.purgeInterval=1
- 对于集群节点data目录快照文件相差非常巨大。用方法2无法使集群正常工作。(即使集群能够正常启动起来,过不了多久又会停止工作。但是各个节点角色还是正常的)。考虑到之前有个节点总是挂起。可以想到整个集群数据不能保证一致,可以考虑是否重建数据目录。这个需要对整个业务衡量
线上ZK问题排查的更多相关文章
- Java线上应用故障排查之二:高内存占用
搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGen space 2.java.lang.OutOfMemoryError: Java ...
- 一次线上OOM故障排查经过
转贴:http://my.oschina.net/flashsword/blog/205266 本文是一次线上OOM故障排查的经过,内容比较基础但是真实,主要是记录一下,没有OOM排查经验的同学也可以 ...
- 线上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 ...
- java线上应用故障排查之二:高内存占用【转】
前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查. 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGe ...
- 【JVM】线上应用故障排查
高CPU占用 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux ...
- 线上服务器CPU100%排查,Linux进程消耗查看
线上服务器CPU100%排查,Linux进程消耗查看 1.排查步骤 1.1Linux下排查 1.1.1查消耗cpu最高的进程PID 1.1.2根据PID查出消耗cpu最高的线程号 1.1.3根据线程号 ...
- MySQL死锁系列-线上死锁问题排查思路
前言 MySQL 死锁异常是我们经常会遇到的线上异常类别,一旦线上业务日间复杂,各种业务操作之间往往会产生锁冲突,有些会导致死锁异常.这种死锁异常一般要在特定时间特定数据和特定业务操作才会复现,并且分 ...
- K8S线上集群排查,实测排查Node节点NotReady异常状态
一,文章简述 大家好,本篇是个人的第 2 篇文章.是关于在之前项目中,k8s 线上集群中 Node 节点状态变成 NotReady 状态,导致整个 Node 节点中容器停止服务后的问题排查. 文章中所 ...
- mysql innodb引擎 一次线上死锁分析排查步骤
我们的线上erp系统一天使用人员反映部分数据死活保存不上而且页面操作很慢.开始以为操作数据量大的原因, 后来查看了我们线上的glowroot系统,发现slowtrace中有超长时间的访问,点开查看详情 ...
随机推荐
- motion做摄像头(ZC3XX)移动物体监控系列问题
一:插入摄像头USB没有显示 gspca: video x creat 解决:cd /dev ls |grep video 进入/dev目录下,运行ls |grep video命 ...
- requests模块:请求网页
请求网页时需要设置对应的headers(请求头) import requests link = 'https://movie.douban.com' headers = {'User-Agent': ...
- 个人永久性免费-Excel催化剂功能第57波-一键生成完全组合的笛卡尔积结果表
在数据库的多表查询中,通常会有各种连接关系,同样地在Excel环境中,也有很大的场景需要用到类似数据库的多表查询,如经典的VLOOKUP就是其中一种类似LEFT JOIN查询的查询效果.在很多时候需要 ...
- Hive之函数与自定义函数
系统自带的函数 1)查看系统自带的函数 hive> show functions; 2)显示自带的函数的用法 hive> desc function upper; 3)详细显示自带的函数的 ...
- 在pom.xml中的dependencies点击add怎么没有搜索到相关jar包
1.eclipse菜单 window-> show view –> other –> Maven 2.在打开的窗口里,右键 local repositories –> loca ...
- Git实战
Git实战 1.Git特点 1.1.Git两大特点 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题. 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器 ...
- JAVA 基于TCP协议的一对一,一对多文件传输实现
最近老师给我们上了多线程和TCP和UDP协议,其中一个要求就是我们用JAVA协议一个基于TCP和UDP这两种协议的一对一文件上传和一对多文件上传. 然后我就开始分析TCP和UDP这两个协议的特点,发现 ...
- 15. Java异常处理
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 配置没有问题,虚拟机Ubuntu系统ifconfig没有网卡信息
如果没有问题,前几天都好好的,突然出现这个问题 sudo ifconfig etho up 其中eth0是我的网卡名称
- 遇见Python集合类型
Python目前有两种内置集合类型,set和frozenset. Ⅰ.两者区别 set是可变的,没有哈希值,其内容可以使用add()和remove()这样的方法来改变,所以不能被用作字典的键或其他集合 ...