为啥新的 ElasticSearch 安装运行这么多进程?

Posted

技术标签:

【中文标题】为啥新的 ElasticSearch 安装运行这么多进程?【英文标题】:Why is fresh ElasticSearch Install running so Many processes?为什么新的 ElasticSearch 安装运行这么多进程? 【发布时间】:2016-05-06 10:27:51 【问题描述】:

我刚刚安装了 ElasticSearch,根本没有加载任何数据。 htop 显示 ElasticSearch 正在运行一堆线程。

View htop output

为什么 ElasticSearch 运行所有这些进程?它在做什么?

我知道您可以配置htop 将所有线程分组到一行中。但这仍然不能回答为什么任何东西都在运行的问题。

【问题讨论】:

Htop showing multiple java processes with different pids的可能重复 【参考方案1】:

简单的答案是,为了高效,ES 使用许多threadpools 来执行它需要做的许多事情。

您可能知道 ES 提供了一个非常强大的搜索引擎。 因此,为了使潜在的大量用户能够高效地运行潜在的大量查询,ES 使用线程池来执行这项工作。

这不是故事的结局。虽然所有这些用户可能会疯狂搜索,但其他用户或进程也可以同时索引大量数据。出于这个原因,ES 需要另一个线程池来处理它可以获得的许多索引请求。这些索引请求可以有两种形式:索引单个文档,批量索引许多文档。对于这两个索引进程,ES 使用了两个不同的线程池。

故事还没有结束。当一些用户正在搜索而另一些用户正在索引数据时,可能会有一个备份过程正在运行(ES 称之为快照)。为此,还有另一个线程池。

等等。该列表并不详尽,但您可以相信 ES 有多个线程池来处理它需要处理的内容,并且它知道如何有效地完成它,因为它只会创建可用处理器可以处理的尽可能多的线程。

您可以查看 ES 管理的 threadpools 的完整列表,您可能会更好地了解它在做什么。您还可以使用/_cat/thread_pool/_nodes/hot_threads 端点,以便更好地可视化这些线程在做什么。

【讨论】:

以上是关于为啥新的 ElasticSearch 安装运行这么多进程?的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch为啥这么快

Elasticsearch:ES 倒排索引为啥查询速度会这么快

为啥 DbSet.Add 工作这么慢?

如果我可以通过 REST 将数据发送到 elasticsearch,为啥还要安装 logstash?

Elasticsearch学习2-安装介绍

为啥电脑更新系统后这么卡?