We have had a couple of circumstances where threads to zookeeper go out of control. In both circumstances the underlying problem was the indexing program creating many CloudSolrServers to do updates. This can be solved by making the CloudSolrServer as a singleton. Remember, there are watches placed on nodes in zookeeper, so you don't need to keep re-querying and making new connections every time you want to do something. This regulates zookeeper from becoming overloaded. So if there is a state change on /clusterstate.json, CloudSolrServer has a watch and will be updated accordingly without having had to requery Zookeeper.
Have more questions? Submit a request