浅谈Solr和ElasticSearch建索引性能优化策略

Posted 我是攻城师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈Solr和ElasticSearch建索引性能优化策略相关的知识,希望对你有一定的参考价值。

 



由于Solr和ElasticSearch都是基于Lucene构建的,所以他们之间有很大程度的相似性,故而他们的一些优化策略基本也是通用的,面对越来越多的海量数据,如何优化全量索引的写入性能呢? 散仙简单总结了下面几个方向的优化策略,如有疑问,欢迎拍砖。 


(一)硬件优化: 
(1)CPU加大,有利于并发写入 
(2)内存提升,加大写入缓冲 
(3)磁盘IO,使用SSD或者IO读写更快的磁盘 
(4)网络IO,保证客户端与服务端的通信带宽充足 

(二)服务端框架优化: 
(1)加大shard的数目,理论上shard越多,写入速度越快 
(2)设置较大的索引flush触发条件,ramBufferSizeMB 或者 maxBufferedDocs 
(3)写索引时,关闭副本,因为同步索引会大大降低写入速度 
(4)监控GC,调整JVM参数 
如果Full GC频繁,加大JVM堆内存, 
如果Yong GC频繁,加大新生代的比例,如果使用的是CMS垃圾收集器,必要时,可以关闭survive区,避免survive区和Eden区来回拷贝 
(5)尽量使用稳定的新版本如JDK和框架本身 
(6)内存大的,可以尝试G1垃圾收集器 


(三) 客户端优化 
(1)如果公司有大数据部门,可以使用Hadoop或者Spark分布式集群构建索引 
(2)如果公司没有大数据产品,可以使用多线程或者多进程并行构建索引 
(3)使用批量提交 
(4)减少commit次数,让服务端控制flush索引,索引完成之后,可手动commit一次。 


以上是关于浅谈Solr和ElasticSearch建索引性能优化策略的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch的实时搜索性能为啥比solr好

solr建索引优化

Lucene解析 - 基本概念

搜索引擎solr和elasticsearch

ElasticSearch入门:Index

Solr DocValues详解