先说基础环境:
1、服务器是centos7.x,程序运行在docker中,docker组成一个小内网,可内到外但外禁止到内
2、jdk是1.8
3、用到zk的服务有kafka、canal、dubbo程序(dubbo程序分两个一个提供者一个消费者)
然后现象:
1、kafka突然连不上或者连接很慢
2、zk集群执行命令特别卡
初步怀疑是zk的问,看了一下zk的连接,每个节点都在2000以上,并且zk的日志出现大量连接建立并立马断开的日志。
继续查看zk的连接,发现大部分来自同一台机器,这台机器上只跑着dubbo的程序。
dubbo的程序分两个,通过启停程序,让其独立运行,发现停止dubbo消费者,zk的连接可以迅速降低到60左右,至此,确定是dubbo消费者有问题。
登陆消费者容器,查看配置。偶然发现时间不对,重新打包镜像修改时间,再启动依然发现未解决问题。
继续查看程序配置,发现kafka连接这部分,使用了新版api但配置确实老版的配置(新版配置kafka节点地址,老版配置zk地址),尝试修改成kafka地址,再启动,问题解决。
附docker修改时间
# using alpine-glibc instead of alpine is mainly because JDK relies on glibc
FROM docker.io/jeanblanchard/alpine-glibc
# author
MAINTAINER
scc <javascc@126.com>
# A streamlined jre
ADD jre8.tar.gz /usr/java/jdk/
# set env
ENV JAVA_HOME /usr/java/jdk
ENV PATH ${PATH}:${JAVA_HOME}/bin
RUN apk add --no-cache tzdata && mv /etc/localtime /etc/localtime.bak && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# run container with base path:/opt
WORKDIR /opt