Почему свежая установка ElasticSearch запускает так много процессов?
Я только что установил ElasticSearch и не загружал никаких данных вообще. htop
показывает ElasticSearch работает куча потоков.
Почему ElasticSearch выполняет все эти процессы? Что это делает?
Я знаю, что вы можете настроить htop
сгруппировать все потоки в одну строку. Но это все еще не отвечает на вопрос, почему что-то работает вообще.
1 ответ
Простой ответ заключается в том, что для обеспечения эффективности ES использует много потоковых пулов для выполнения многих необходимых задач.
Как вы, наверное, знаете, ES предоставляет очень мощный поисковый движок. Таким образом, чтобы потенциально большое количество пользователей могло эффективно выполнять потенциально огромное количество запросов, ES использует пул потоков для выполнения этой работы.
Это не конец истории. В то время как все эти пользователи могут выполнять поиск, как mads, другие пользователи или процессы могут одновременно индексировать потенциально большой объем данных. По этой причине ES нужен другой пул потоков для обработки множества запросов на индексирование, которые он может получить. Эти запросы могут быть представлены в двух формах: индексирование одного документа, массовое индексирование многих документов. Для этих двух процессов индексирования ES использует два разных пула потоков.
Это еще не конец истории. В то время как некоторые пользователи выполняют поиск, а некоторые другие индексируют данные, может быть запущен процесс резервного копирования (что ES называет моментальным снимком). Для этого есть еще один пул потоков.
И так далее. Список не является исчерпывающим, но вы можете верить, что в ES есть несколько пулов потоков для обработки того, что ему нужно, и он знает, как это сделать эффективно, поскольку он будет создавать столько потоков, сколько могут обрабатывать ваши доступные процессоры.
Вы можете просмотреть полный список пулов потоков, которыми управляет ES, и вы, вероятно, лучше поймете, что он делает. Вы также можете использовать /_cat/thread_pool
и /_nodes/hot_threads
конечные точки, чтобы лучше визуализировать, что делают эти потоки.