1. 背景
ES中的线程数以及核数主要体现在ES线程池使用上,见
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-threadpool.html
2. processors
通过 GET /_nodes/os 可以查看各个节点processors分片情况
5.X版本,单个节点 allocated_processors 最多分配32核
最新的7.X版本已经没有这个限制, available_processors 和 allocated_processors 保持一致为最大可用核数
3. ES中的线程池
以thread_pool.search.size为例:
公式一:thread_pool.search.size = ( 3 * available_processors/2 )+1
公式二:thread_pool.search.queue_size = 1000
1、只设置processors大小,ES会根据公式一计算出thread_pool.search.size,ES使用的CPU核数最大为min(系统最大核数,thread_pool.search.size)
2、只设置thread_pool.search.size大小,ES使用的CPU核数最大为min(系统最大核数,thread_pool.search.size)
3、同时设置processors、thread_pool.search.size,以公理2 thread_pool.search.size情况为准
4. 线程池和查询性能关系
经过大量实验,thread_pool.search.size从30线程到300线程,查询耗时总体呈先下降后上升趋势
thread_pool.search.size设置为CPU核数的95%的时候性能最优
thread_pool.search.queue_size设置为-1的时候,并发查询性能最优
来源:oschina
链接:https://my.oschina.net/KasuganoShin/blog/4410997