首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RestHighLevelClient保持连接打开吗?

RestHighLevelClient保持连接打开吗?
EN

Stack Overflow用户
提问于 2020-10-18 07:17:14
回答 1查看 1.3K关注 0票数 2

我想在不同的集群上使用RestHighLevelClient,这些命令不受交叉集群机制的支持(例如,关闭和打开索引)。

我的问题是,如果我对每个集群使用多个RestHighLevelClient实例,那么每个集群的连接都会保持打开吗?(为了确保我没有阻塞应用程序)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-18 07:36:21

通过查看各种资源,似乎RestHighLevelClient保持了连接的打开状态,除非您显式地调用了它的client.close();

来自正式RestHighLevelClient初始化

高级客户端将在内部创建用于根据提供的构建器执行请求的低级客户端。该低级别客户端维护一个连接池,并启动一些线程,因此,当您很好地、真正地使用它时,您应该关闭高级客户端,然后它将关闭内部低级别客户端以释放这些资源。可以通过关闭方法来完成:

在您的示例中,如果您拥有大量ES集群,并且创建了多个RestHighLevelClient (如您所猜测的那样),那么它可能会阻塞您的应用程序,原因是线程及其资源的掌握,因此您应该显式调用close,这将需要更多的时间来再次创建它,但在大多数情况下不会阻塞您的应用程序。

我建议您在应用程序上做一些资源基准测试,并根据您的权衡选择最好的方法。

  1. 创建多个客户端,不要关闭它们,而是分配更多的资源,这样应用程序就不会被阻塞。
  2. close客户机通常不需要过多分配资源,但是当您为请求创建一个新客户端时,延迟就会更大。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64410714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档