ElasticSearch优化
硬件选择
- 使用ssd
- 使用RAID0
- 使用多个硬盘,并允许ES通过多个path.data目录配置把数据条带化分配到他们上面
不要使用远程挂载的存储,比如NFS或者SMB/CIFS。这个引入的延迟对性能来说是背道而驰
分片策略
合理设置分片数
- 控制每个分片占用的硬盘容量不超过ES的最大JVM的堆空间(一般设置不超过32G),因此,如果索引的总量在500G左右,那分片大小在16个左右即可,最好同时考虑原则2
- 考虑一下node数量,一般一个节点有时候就是一台物理机,如果分片数量过多,大大超过了节点数,很可能会导致一个节点上存在多个分片,一旦该节点故障,即使保持了一个以上的副本,同样有可能会导致数据丢失,集群无法恢复。所以, 一般都设置分片数不超过节点数的3倍。
- 主分片,副本和节点最大数之间数量,分配参考关系
节点数 <= 主分片数 * (副本数+1)
推迟分片分配
写入速度优化
- 加大TranslogFlush,目的是降低Iops,Writeblock.
- 增加Index Refresh间隔,目的是减少segment Merge的次数
- 调整Bulk线程池和队列
- 优化节点间的任务分布
- 优化Lucene层的索引建立,目的是