即使是不成熟的尝试,也胜于胎死腹中的策略。

elasticsearch segment 合并太快什么原因

Elasticsearch | 作者 240475588 | 发布于2017年08月09日 | 阅读数:5715

elasticsearch segment 合并太快什么原因


场景是这样的:bulk update5000数据,一直在跑(每批5000不停的更新数据)
结果发现每秒segment 产生几十上百个10KB的(假设我每批数据10MB,不是应该产生几个2MB的segment 吗?),
每批bulk update 几十秒,甚至上百秒,太慢了,我并发不高单线程跑的
如下图
环境 8核cpu 32G内存 硬盘300G,3台机器,
1.6亿文档,总共占硬盘60G
dcb15a1d9645422bb813397fca4dc7ec.png





a56e46cbfb92465eab84df8d12edafb7.png


0d2ce2338ab04adebeb47f26b390c9a9.png


 
已邀请:

kepmoving - 90后

赞同来自: juneryang shwtz

Lucene 把每次生成的倒排索引,叫做一个段(segment).然后另外使用一个 commit 文件记录索引内所有的 segment,生成 segment 的数据来源,refresh到内存中的 buffer。从写入refresh到文件缓存buffer中默认设置为 1 秒。es中另外还记录了translog 日志。通过translog 日志真正把 segment 刷到磁盘,同时commit 文件进行更新,然后translog 文件才清空。这一步,叫做 flush。默认设置为:每 30 分钟主动进行一次 flush。也就是索引的过程会持续生成小的segment,每隔一段时间就是commit这些segment,es会自动合并这些小的segment

cjwang

赞同来自: 冯坤

lz用的什么做监控的呀,看着不错

白衬衣 - 金桥

赞同来自:

logstash的话,output elasticsearch中,两个参数:idle_flush_time,flush_size。如果是其他的软件写es,也需要类似的两个参数。

240475588

赞同来自:

1111

要回复问题请先登录注册