solr / zookeeper面临的问题是,动物园管理员在10000毫秒后超时。错误如下。
SolrException: java.util.concurrent.TimeoutException: Could not connect to ZooKeeper <server1>:9181,<server2>:9182,<server2>:9183 within 10000 ms.
at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:184)
at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:121)
我们的Zookeeper日志没有任何错误。除了下面的日志
2018-12-19 04:35:22,305 [myid:2] - INFO [SessionTracker:ZooKeeperServer@354] - Expiring session 0x200830234de3127, timeout of 10000ms exceeded
2018-12-19 05:35:38,304 [myid:2] - INFO [SessionTracker:ZooKeeperServer@354] - Expiring session 0x200b4f912730086, timeout of 10000ms exceeded
在问题期间,线程数量很高,我们可能会在下面的weblogic服务器中注意到这一点。
Name: Connection evictor
State: TIMED_WAITING
Total blocked: 0 Total waited: 1
Stack trace:
java.lang.Thread.sleep(Native Method)
org.apache.http.impl.client.IdleConnectionEvictor$1.run(IdleConnectionEvictor.java:66)
java.lang.Thread.run(Thread.java:748)
这里可能出什么问题了?
答案 0 :(得分:0)
以我的经验,ZK超时几乎总是归因于Solr节点上的某件事,而不是ZK中的问题。
您没有提供所有时间戳,但理论是:
那么Solr节点为什么无法发送心跳?这可能是因为Solr节点只是过载(线程尖峰是原因,还是症状?),或者只是经过很长的GC暂停也可以做到这一点。