【dubbo实战】记一次zookeeper连接数暴增事件

基础环境:

1、centos7.x,程序运行在docker中。
2、jdk是1.8
3、用到zk的服务有kafka、dubbo程序(dubbo程序分两个一个提供者一个消费者)

问题现象:

1、kafka突然连不上或者连接很慢
2、zk集群执行命令特别卡
3、在zookeeper.out中出现too many connecttion from _ip :显示我在_ip上的某应用请求过度!

解决思路:

    [maxClientCnxns]默认值60,对于那些单应用都是足够得,除非是在此集群上部署了十几个应用

初步怀疑是zk的问,看了一下zk的连接,

sudo netstat -nap |grep 2181 #发现确实是项目的问题
netstat -na | grep 2181 | wc -l

每个节点都在2000以上,并且zk的日志出现大量连接建立并立马断开的日志。

继续查看zk的连接,发现大部分来自同一台机器,这台机器上只跑着dubbo的程序。

dubbo的程序分两个,通过启停程序,让其独立运行,发现停止dubbo消费者,zk的连接可以迅速降低到60左右,至此,确定是dubbo消费者有问题。

登陆消费者容器,查看配置。偶然发现时间不对,重新打包镜像修改时间,再启动依然发现未解决问题。

继续查看程序配置,发现kafka连接这部分,使用了新版api但配置确实老版的配置(新版配置kafka节点地址,老版配置zk地址),尝试修改成kafka地址,再启动,问题解决。

备注:

如果不是代码的问题,还可以尝试修改配置文件:

  • a.zookeeper默认连接数值60,可以适当调大至500。
  • b.在配置文件中加入会话超时设置,在conf/zoo.conf最后加上:minSessionTimeout=30000,maxSessionTimeout=60000

你可能感兴趣的:(Dubbo)