为什么 fresh ElasticSearch Install 运行 这么多进程?

Why is fresh ElasticSearch Install running so Many processes?

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

View htop output

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

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

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

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

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

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

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

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