淺談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),在後臺留言諮詢。 技術債不能欠,健康債更不能欠, 求道之路,咱們同行。
歡迎關注本站公眾號,獲取更多信息