【问题标题】:After few successful updates to solr, throws SolrException: java.util.concurrent.TimeoutException: Could not connect to ZooKeeper在对 solr 进行几次成功更新后,抛出 SolrException: java.util.concurrent.TimeoutException: Could not connect to ZooKeeper
【发布时间】:2018-09-20 15:37:21
【问题描述】:

我正在使用 solr 版本 7.3.1 并将其与 3 个外部 zookeeper 节点一起使用。

以下是我的其中一个节点的 zookeeper 配置,都具有相似的配置:

tickTime=2000

initLimit=10
syncLimit=5
dataDir=/Users/<user>/zookeeper/zookdata/zk2/
clientPort=2182

server.1=localhost:2666:3666
server.2=localhost:2667:3667
server.3=localhost:2668:3668

然后,我正在使用这 3 个节点来启动 solr。在我的应用程序中,我使用localhost:2182,localhost:2183 连接到 solr,使用以下代码。

List<String> zkHosts = Arrays.asList(solrZkHostPort.split(","));
    CloudSolrClient.Builder builder = new CloudSolrClient.Builder(zkHosts, Optional.empty());
    solrClient = builder.build();

我正在使用多个 spark 执行器将文档更新为 solr。在更新失败后,它适用于一些 1100-1300 记录更新,但以下异常:

Caused by: org.apache.solr.common.SolrException: java.util.concurrent.TimeoutException: Could not connect to ZooKeeper localhost:2182,localhost:2183 within 10000 ms
    at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:183)
    at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:120)
    at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:110)
    at org.apache.solr.common.cloud.ZkStateReader.<init>(ZkStateReader.java:285)
    at org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider.connect(ZkClientClusterStateProvider.java:155)
    at org.apache.solr.client.solrj.impl.CloudSolrClient.connect(CloudSolrClient.java:399)
    at org.apache.solr.client.solrj.impl.CloudSolrClient.requestWithRetryOnStaleState(CloudSolrClient.java:828)
    at org.apache.solr.client.solrj.impl.CloudSolrClient.request(CloudSolrClient.java:818)
    at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:194)
    at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:106)
    at com.package.SomeApplicationClass
    ... 16 more
Caused by: java.util.concurrent.TimeoutException: Could not connect to ZooKeeper localhost:2182,localhost:2183 within 10000 ms
    at org.apache.solr.common.cloud.ConnectionManager.waitForConnected(ConnectionManager.java:232)
    at org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:175)
    ... 26 more

我也遇到了异常,但不确定这是否有任何意义:

18/09/20 12:45:40 WARN ClientCnxn: Session 0x0 for server localhost/127.0.0.1:2183, unexpected error, closing socket connection and attempting reconnect

    java.io.IOException: Connection reset by peer
        at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
        at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
        at sun.nio.ch.IOUtil.read(IOUtil.java:192)
        at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:68)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:366)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)

知道可能是什么问题吗?我需要更改 zookeeper 配置还是我创建 solr 客户端的方式需要更改?

【问题讨论】:

    标签: apache-zookeeper solrj solrcloud


    【解决方案1】:

    菜鸟错误。

    我的 spark 工作正在创建超过 1000 个 spark 执行器,并且对于每个执行器,正在创建 solr 客户端,而我没有关闭 solrClient。执行程序完成后关闭 solrclient。

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 1970-01-01
      • 2021-08-11
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      相关资源
      最近更新 更多