浅谈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一次。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容