导语:线上zk集群挂掉了,执行status报错Error contacting service. It is probably not running
观察现象:
3台服务器都提示Error contacting service. It is probably not running,没有leader和follower
但是端口和进程都是在的
测试:
尝试在本机和其他服务器telnet 2181端口,只有偶尔能连上。
排查:
防火墙检查没问题,服务的列表检查没问题
查看日志发现连接这块一直报错无法连接,怀疑是连接数暴涨没有释放的缘故。
查看阿里云控制 发现服务器连接数暴涨
默认最大连接数60
增加以下配置到zoo.cfg
maxClientCnxns=500 # 默认是60 当时配置是0 minSessionTimeout=30000 # 最小的客户端session超时时间,默认值为2个tickTime,单位是毫秒 maxSessionTimeout=60000
修改配置之后依次重启zk,并重启dubbo服务。这里暂时没有想到更好的办法。比较着急就重启了。
3台都要重启。否则没法选举。3台是zk集群的最小配置。
查阅资料补充:
解决从以下两个方式:
1.代码:打补丁,解决zookeeper连接资源,producer.close 、consume.shutdown。 2.配置文件: a.zookeeper默认连接数值60,可以适当调大至500。 b.在配置文件中加入会话超时设置,在conf/zoo.conf最后加上:minSessionTimeout=30000,maxSessionTimeout=60000 会话zookeeper超时在没有设定时间时会根据ticktime*(2-20)ms来定 若之后还出现此类问题,应急性的处理方式重启zookeeper集群,建议搭建使用zookeeper集群管理平台exhibitor, 功能: 1、检测ZK实例并确保它正在运行,有自行重启功能 2、执行定期备份 3、定期清理ZK日志目录(zookeeper.out) 4、用于查看ZK节点的GUI资源管理器 其实遇到这种情况 99% 都是代码问题,还是找一下自己代码问题的好,增加连接数这都是不是什么明智的方法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)