java - 频繁调用 Solr 查询期间 Solr 错误 -> "Cannot assign requested address (connect failed)"

标签 java solr solrj

我在 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/

相关文章:

java - 使用 @ResponseBody 的 Http 响应

hadoop - Solr以文档或RTF格式返回响应

java - 在 Solr 组件的准备方法中执行分布式搜索

if-statement - 在单个条件下对多个 ansible 任务进行分组

java - Solr 中缺少强制 uniquekey 字段错误

solr - 如何在solr中的固定位置对某些项目实现自定义排序顺序?

Java - 泛型与转换对象

Java正则表达式替换原始字符串中的组值

java - Envers 自定义修订监听器

solr - 使用 setQueryType 通过 SolrJ 访问核心的默认处理程序