不要急,总有办法的

ES6.3.2 执行搜索请求(SEARCH 操作)的线程池 什么情况下会调整任务队列大小?

Elasticsearch | 作者 hapjin | 发布于2019年03月11日 | 阅读数:2615

执行search请求的线程池是:QueueResizingEsThreadPoolExecutor,使用的任务队列是:ResizableBlockingQueue。在默认配置下:任务队列的最大容量和最小容量都是1000,根据 little's law 调整任务队列的长度。而任务队列的调整需要和最大容量以及最小容量比较,但是这两个容量默认是相同的(maxCapacity等于minCapacity)
 
org.elasticsearch.common.util.concurrent.ResizableBlockingQueue#adjustCapacity
if (optimalCapacity > capacity + adjustmentAmount) {
// adjust up
final int newCapacity = Math.min(maxCapacity, capacity + adjustmentAmount);
this.capacity = newCapacity;
return newCapacity;
} else if (optimalCapacity < capacity - adjustmentAmount) {
// adjust down
final int newCapacity = Math.max(minCapacity, capacity - adjustmentAmount);
this.capacity = newCapacity;
return newCapacity;
} else {
return this.capacity;
}


应该只有在配置文件里面将线程池任务队列最大/最小容量配置成不一样的参数大小,才能发挥这个队列长度的调整作用?不知道是否对不对?
已邀请:

hapjin

赞同来自:

ResizableBlockingQueue队列的默认长度:
queue_size.png

 
QueueResizingEsThreadPoolExecutor线程池默认参数
thread_pool_info.png

 
 

要回复问题请先登录注册