你可以的,加油

对于纯写入节点是否有必要把index buffer设置很高呢?

Elasticsearch | 作者 wangxinrong | 发布于2020年05月27日 | 阅读数:1867

indices.memory.index_buffer_size 这个值默认是10%,我测试过纯写入情况下,把这个值分别调成30% 50% 80%,发现数据写入速率只有轻微的提高。
 
我的一个es集群,由于经常有从其他数据源导入数据,导入完成后不再有写入,只有纯查询的情况,为了避免导入时影响查询,现在是专门设置了一组节点用于导数据,完成之后分片迁移到其他节点。
 
1.这组仅用于导数据的节点,有必要把index_buffer_size调大吗。除了这个参数外,还有其他参数需要调整吗。
2.假如调成了80%,是代表它会独占这80%内存,仅剩20%给其他用途,还是说内存是争用的,它最大能够用到80%呢。
已邀请:

byx313 - BLOG:https://www.jianshu.com/u/43fd06f9589c

赞同来自:

Q1:这个问题还挺有意思的,我尝试着回答下。首先index buffer这个池是用来缓冲数据写入的,数据写入buffer以后,默认1s以后就会被写入磁盘。所以除非你能在1s以内写入大于buffer池的内容(起码有几百M到几G),不然单纯的提升buffer池是没意义的。
再回到你的写入场景。你现在是要尽量的提升写的性能,可以在疯狂写入的期间(1)把集群rebalance关闭(2)把shard副本关闭,相信可以提升不少的写入性能。如果都做了,可以(1)降低下refresh的频率(2)提高merge_factor的值,降低merge次数。但是我觉得可能意义不大。
最后,确保没有使用自定义id,bulk性能差非常多。
Q2:没记错是个最大值。

要回复问题请先登录注册