前言
经常会有人吐槽,Elasticsearch为什么写着写着突然就慢了?
笔者总结了常见的一些导致写入慢的场景,以供大家排查。
话不多说,进入正题…
Elasticsearch写入慢问题排查思路
Elasticsearch的写入场景相对比较简单,绝大部分场景下我们都是使用bulk API进行写入操作,列举了下面一些场景可能会导致写入慢的问题。
场景1 内存参数配置不合理。
是否给Elasticsearch实例足够的内存,如果内存足够的话,建议配置30GB每个Elasticsearch数据实例节点。
场景2 bulk提交量过大,导致内存被堆满。
一次提交的bulk数量不宜过大,实践证明5-10MB左右大小合适。
场景3 客户端IP,端口配置问题。
因为Elasticsearch的客户端采用的是轮询的方式,所以尽量配置所有节点的IP、端口,或者开启嗅探功能。
场景4 写入时指定DOC ID,导致读IO高。
写入时指定DOC ID,意味着首先需要判断ID是否重复,如果在大数据量的场景下,可能会需要从磁盘进行一次读操作,从而占用大量的磁盘IO,导致写入速度