2015年10月28日 星期三

[elasticsearch] 配置 heap 在超級服務器上 (purpose-built hardware elasticsearch heap configuration )


如果你有1TB ram 的大機器,你會怎麼配置elasticsearch呢?

30.5G這個數字是非常重要的。所以,你使用大機器的時間,你將會多出很多的記憶體。尤其是現在有很多記憶體高達512G~768G 的超級服務器。

首先,官方的建議是避免使用者樣的大機器。
Hardware
https://www.elastic.co/guide/en/elasticsearch/guide/current/hardware.html

一般來說,在這種大型分散式系統如hadoop ,都推薦使用一般的˙商用硬體(commodity hardware)。

如果你已經擁有這樣的超級服務器,
你可以採取的方案有兩個

若是主要是在使用full-text search ? 可以考慮把Elasticsearch ES_HEAP_SIZE 設成 30.5G,把其他剩下的memory 都留給Lucene 透過系統的緩存來使用這些memory。由於segment都緩存在系統中,所以你會有更好的 full-text search(全文檢索)效能。

若是主要在sorting /aggregations ? 當然會預期,能夠使用越多memory越好。但是取代設定超過30.5G給Elasticsearch 的heap ,可以考慮在一台機器上運行多個elasticsearch節點。
依然依照 50% rule,把剩下的memory給lucene使用。舉例來說,你有128G的RAM 在上面運行兩個節點,各配置給他們30.5G。所以,有61G使用在heap上,67G留給系統與Lucene使用。
使用了,在一台機器上裝上多個節點的方案,可以設定
cluster.routing.allocation.same_shard.host: true

這個選項可以避免 primary shard跟 replica share 放在同一台實體機器上。

沒有留言:

張貼留言