zookeeper注册中心服务异常下线原因排查

zookeeper注册中心服务异常下线原因排查

问题及原因

​ 最近接手了一个旧项目,项目分为4个模块,模块之间的采用http通信。通信的http框架是自研的,使用了zookeeper作为注册中心。刚接手不免要debug调试,但是在测试环境debug打断点经过一段时间之后,项目之间调用时经常发生zk上服务找不到的情况,在项目重启之后服务又恢复正常。

​ 排查发现,项目启动的时候在zookeeper上注册的是一个临时节点,当zk服务端与客户端连接中断时候,zk服务端会删除这个临时节点。在第一次创建连接时ZooKeeper都会为客户端分配一个全局唯一的sessionID,通过ping客户端保持会话。项目自研的http框架设置ping的时间间隔默认为30s,因为debug会中断其他线程运行,导致zk服务器与客户端通信中断,临时节点被删除。

​ 排查到这里,我以为就结束了,当我把项目中的超时时间设定为120S之后,连接还是只保持了40S就中断了。原来zk服务端也有一个超时时间限制,在zk的/conf/zoo.cfg配置文件中,有一个tickTime参数,默认值为2000ms。这个参数限制了会话超时时间:默认为tickTime的 2到20倍,超时时间由客户端设置且不能超出最小最大范围(4S-40S)。

​ 在我把服务端的tickTime参数调整到了5000ms,连接时间成功保持了120S。

附上部署zookeeper镜像的流程

# 拉取最新版镜像
docker search zookeeper 
docker pull zookeeper

# 创建挂载目录
mkdir -p /usr/local/zookeeper/data
mkdir -p /usr/local/zookeeper/datalog
mkdir -p /usr/local/zookeeper/logs

# 运行镜像
docker run -itd -p 21813:2181 --restart always --name=zookeeper-dev  --privileged=true \
-v /usr/local/zookeeper/data:/data \
-v /usr/local/zookeeper/datalog:/datalog \
-v /usr/local/zookeeper/logs:/logs \
-e "ZOO_STANDALONE_ENABLED=true" \
-e "TZ=Asia/Shanghai" \
-e "ZOO_4LW_COMMANDS_WHITELIST=*" \
-e "ZOO_AUTOPURGE_SNAPRETAINCOUNT=5" \
-e "ZOO_AUTOPURGE_PURGEINTERVAL=24" \
-e "ZOO_MAX_CLIENT_CNXNS=64" \
-e "ZOO_TICK_TIME=2000" \
-e "ZOO_INIT_LIMIT=100" \
-e "ZOO_SYNC_LIMIT=5" \
zookeeper:latest
# 把配置文件copy一份到本地
docker cp zookeeper-dev:/conf /usr/local/zookeeper/

# 编辑zoo.cfg文件
vi /usr/local/zookeeper/zoo.cfg

dataDir=/data
dataLogDir=/datalog
tickTime=5000
initLimit=100
syncLimit=5
autopurge.snapRetainCount=5
autopurge.purgeInterval=24
maxClientCnxns=64
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181
4lw.commands.whitelist=*

# 重新运行docker镜像
docker stop zookeeper-dev
docker rm zookeeper-dev
docker run -itd -p 21813:2181 -p 8873:2888 -p 8872:3888 --restart always --name=zookeeper-dev  --privileged=true \
-v /usr/local/zookeeper/conf/zoo.cfg:/conf/zoo.cfg \
-v /usr/local/zookeeper/data:/data \
-v /usr/local/zookeeper/logs:/datalog \
-e "TZ=Asia/Shanghai" \
-e "JAVA_OPTS=-server -Xms512m -Xmx512m -Xmn256m -Duser.home=/opt -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:+AlwaysPreTouch -XX:-UseBiasedLocking" \
zookeeper:latest
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值