本文汇总了使用Zookeeper时的常见问题。

ZooKeeper服务不稳定,发生异常重启等情况,怎么办?

造成服务不稳定的情况可能有很多,最常见的情况是znode数量过大或者snapshot过大,由于ZooKeeper将所有的znode维护在内存中,并且需要在节点间进行数据同步,因此过大的znode数量或者容量会对服务稳定性造成影响。ZooKeeper的定位是一个分布式协调服务,不能把ZooKeeper当作一个文件系统来使用,通常,znode数量应尽量保持在10万以下,snapshot大小应在800 MB以下。
  • 您可以在ZooKeeper服务的状态页签,查看znode数量监控。Zookeeper-1
  • 查看snapshot大小。
    1. 您可以先在ZooKeeper服务的配置页签,搜索并查看zk_data_dirs的参数值,获取Zookeeper的数据目录。zk_data_dirs
    2. 在ZooKeeper数据目录下查看snapshot的大小。snapshot

如果出现znode数量或snapshot过大的情况,需要排查znode分布情况,避免相关上层应用对ZooKeeper的过度使用。

报错信息包含Too many connections,怎么办?

当使用ZooKeeper客户端的进程出现类似Too many connections的报错时,可能是因为ZooKeeper客户端的连接数超过了限制。

您可以在ZooKeeper服务的 配置页签,搜索并修改 maxClientCnxns参数值,该配置限制了每个ZooKeeper节点和单个客户端IP之间的连接数,您可以适当调大该参数值,然后重启ZooKeeper服务使其生效。 Zookeeper-config
当通过调整 maxClientCnxns参数值后,仍然无法满足需求时,您可以在ZooKeeper状态页面观察一下连接数监控。如果发生连接数不断上升的情况,您需要排查一下使用ZooKeeper客户端的进程,是否存在ZooKeeper使用问题,例如使用后没有正确释放连接。根据排查的问题进行相应的处理,使得ZooKeeper客户端的进程可以正常运行。 Zookeeper-2