如同磁铁吸引四周的铁粉,热情也能吸引周围的人,改变周围的情况。

elasticsearch 索引bulk耗时突然变长,3台机器只有一台有bulk.active

Elasticsearch | 作者 zhangdadadapao | 发布于2019年10月05日 | 阅读数:2306

数据是通过hive向es中写入的(org.elasticsearch.hadoop.hive.EsStorageHandler),写入数据1300w、5.5g,原本耗时约40分钟,两天前开始写入耗时增加,数据规模相似的写入耗时需5小时以上,查看集群中的thread_pool,发现只有一台机器在执行写入,且bulk.queue中有很多线程在等待,如下图
 
QQ图片20191005092207.png

 
另有一个b集群,规模与a类似(上述有问题的集群),执行相同的数据写入耗时约20分钟,下图是b集群写入时的thread_pool,

QQ图片20191005092354.png

 
 
求助a集群是否是因为我理解的那样只有一台机器在执行写入导致a集群写入耗时更长,是否可以修改令a集群和b集群一样同时有三个集群写入,如果不是是否可能有其他原因导致。
已邀请:

zhangdadadapao

赞同来自:

a集群索引分片数3,副本数1;b集群分片数3,副本数0

zhangdadadapao

赞同来自:

现在发现其余两个节点也会有bulk线程,似乎是执行的比较快(也可能是发送到这两个节点的请求比较少?),所以不会阻塞,而那个阻塞的机器cpu占用约60-80%,其余两个节点cpu不到10%。查看阻塞机器的日志发现“now throttling indexing: numMergesInFlight=6, maxNumMerges=5”,大约2-4s打印一条,可能是频繁的段合并导致这个机器执行bulk慢吗?

zhangdadadapao

赞同来自:

a集群有问题的节点重启后问题好像解决了,目前200w数据量的索引任务执行时间与出问题前差别不大,也不会出现“now throttling indexing: numMergesInFlight=6, maxNumMerges=5”这个日志。但是导致问题的原因没什么头绪。
还有一点就是重启后的索引大小比重启前大一些,如下图

QQ图片20191006022019.png

第一个和第三个数据都是今天构建的,不过第一个是重启后构建成功的,占用大小比重启前构建的第三个要大一些,猜测是可能段合并少了?目前看来导致问题的主要因素是频繁的的段合并。

要回复问题请先登录注册