淺談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一次。 


有什麼問題能夠掃碼關注微信公衆號:我是攻城師(woshigcs),在後臺留言諮詢。 技術債不能欠,健康債更不能欠, 求道之路,咱們同行。
相關文章
相關標籤/搜索