Q:有两个人掉到陷阱里了,死的人叫死人,活人叫什么?

ES 线程池问题

Elasticsearch | 作者 mcs41531 | 发布于2018年03月12日 | 阅读数:6066

请教:一、在单机4核的机器上,bulk线程池是默认的4个,用4个进程同时bulk数据,为什么bulk线程池里queue是大于0的?
二、三台机器(4核)的集群上,是否可以同时12个进程去bulk?
三、三台机器集群,一个master两个data,bulk请求是平均发在三台机器上还是平均发在两个data上?
 
已邀请:

viewsite

赞同来自:

queue 表示等待队列里面的shard写入请求, 默认设置是200

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

来自官网:尽量不要动这个配置,如果要动,建议改为: 
int(( 核心数 * 3 )/ 2 )+ 1 。 
同时满足:不允许bulk和’indexing’线程池的大小大于CPU内核数。

举例:24核处理器,检索服务器是24核,所以:线程池的大小=(24*3)/2+1=37, 
同时要满足cpu核数为24。37和24取最小值,应该选择24。

gtexpanse

赞同来自:

不能这样理解,假如三个线程bulk的数据都会路由到一个分片里去,势必这个节点的队列会堵

hapjin

赞同来自:

1,向线程池提交任务速度很快时(比如很多bulk请求),线程池当前线程数量处理不过来,任务会入队列。所以queue size大于0
2,可以。在elasticsearch.yml里面可指不同线程池的线程个数,参考:increase-thread-pool-queue-size-in-elasticsearch 和 threadpool
3,不确定。你的master节点上有data吗?还是只是将这个节点只作为 master? master节点也可以存储数据。默认情况下,一个节点既是master eligible 节点,又是data节点,又是coordinator 节点,参考:modules-node。请求的分发是基于round-robin 算法。

要回复问题请先登录注册