我剛剛安裝了ElasticSearch,並沒有加載任何數據。 htop
顯示ElasticSearch運行一堆線程。爲什麼新鮮的ElasticSearch Install會運行如此多的進程?
爲什麼ElasticSearch運行的所有進程?它在做什麼?
我知道你可以配置htop
將所有線程分組爲一行。但是,這仍然沒有回答爲什麼有什麼運行的問題。
我剛剛安裝了ElasticSearch,並沒有加載任何數據。 htop
顯示ElasticSearch運行一堆線程。爲什麼新鮮的ElasticSearch Install會運行如此多的進程?
爲什麼ElasticSearch運行的所有進程?它在做什麼?
我知道你可以配置htop
將所有線程分組爲一行。但是,這仍然沒有回答爲什麼有什麼運行的問題。
簡單的答案是,爲了高效率,ES使用許多threadpools來執行它需要做的許多事情。
正如你可能知道的ES提供了一個非常強大的搜索引擎。 因此,爲了使潛在的大量用戶有效地運行潛在的大量查詢,ES使用線程池來執行該工作。
這不是故事的結尾。雖然所有這些用戶可能會像mads一樣搜索,但其他用戶或進程也可以同時爲可能的海量數據建立索引。出於這個原因,ES需要另一個線程池來處理它可以獲得的許多索引請求。這些索引請求可以有兩種形式:索引單個文檔,批量索引許多文檔。對於這兩個索引進程,ES使用兩個不同的線程池。
這仍然不是故事的結尾。當一些用戶正在搜索和其他一些用戶正在索引數據時,可能會有一個備份過程正在運行(ES稱爲快照)。爲此,還有另一個線程池。
依此類推。這個列表並不詳盡,但您可以相信ES有幾個線程池來處理它需要處理的事情,並且知道如何有效地執行它,因爲它只會創建儘可能多的線程,而您的可用處理器可以處理這些線程。
你可以查看ES正在管理的threadpools的完整列表,你可能會更好地理解它在做什麼。您還可以使用/_cat/thread_pool
和/_nodes/hot_threads
端點來更好地可視化這些線程正在執行的操作。
[Htop顯示多個java進程與不同的pid]可能的重複(http://stackoverflow.com/questions/11017597/htop-showing-multiple-java-processes-with-different-pids) – djaszczurowski