我在 Ubuntu 系统上的端口 8983 上运行 Solr 7.1。
它包含 8 个核心,每个核心中约有 2 亿个文档。我正在运行一个java代码,它同时对不同的核心进行solr查询。根据我的要求,它需要在一秒钟内调用10000个查询,并且会持续3-4个小时。当我运行此代码时,几秒钟后出现以下错误:
org.apache.solr.client.solrj.SolrServerException: Server refused connection at: http://
10.*.*.*:8983
/solr/solr_core
.Caused by: org.apache.http.conn.HttpHostConnectException: Connect to
10.*.*.*:8983
[/10.*.*.*:8983
] failed: Cannot assign requested address (connect failed)
.
Caused by: java.net.ConnectException: Cannot assign requested address (connect failed)
我已经探索过,如果我减少每秒查询的数量或者在一段时间间隔后给予一些延迟,它可以在一定程度上解决我的问题。但在运行该程序 1 小时后我仍然收到此错误。 由于我不是 Solr 方面的专家,因此我不知道它发生的任何限制。
最佳答案
可能您正在耗尽本地端口,据我所知,如果您非常积极地打开新连接,这是由于保持 Activity 配置所致。
我建议看看 SolrJ HttpClientUtil ,此类允许您创建一个定义您自己的 PoolingClientConnectionManager 配置的客户端。
关于java - 频繁调用 Solr 查询期间 Solr 错误 -> "Cannot assign requested address (connect failed)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49643048/