Elasticsearch 崩潰(記憶體相關問題 OutOfMemoryError: Java heap space )

當發生了 Elasticsearch 節點無預警故障,先確認看看 LOG 內容

打開 /var/log/elasticsearch/omnistor_es.log

檢查是否有關鍵字 java.lang.OutOfMemoryError: Java heap space

如果有,就朝記憶體管理方面查修。

 

Omnistor 採用 Elasticsearch 6.7版本,而在 Elasticsearch 官網有提到:

當運行在 Production 上,就必須要去改記憶體配置。但要配置多少本來就沒有標準值,是使用者自己要判斷的,ES官方預設是 1GB。

ES的官網論述在此     https://www.elastic.co/guide/en/elasticsearch/reference/6.8/heap-size.html

ES官方預設是 1GB,如果覺得這個值太小的話,試想想當一個只有10GB RAM的 VM,

並且是 All-in-One架構的Omnistor,啟動候基本就會消耗掉將近8GB RAM。

假如 ES 被配置了 4GB RAM,那這個All-in-One架構的Omnistor VM 一樣很快就會崩潰,

因為所有元件都在搶 RAM。

 

/etc/elasticsearch/jvm.options

預設是

-Xms1g
-Xmx1g

假設:一台獨立的 Search VM 有 12GB RAM,參考官網的建議後,建議配置參考如下:

配置 OS: 2GB RAM

配置給 Elasticsearch: 8GB RAM

配置給 Redis、Event-handler: 2GB RAM

 

所以修改 : /etc/elasticsearch/jvm.options

-Xms8g
-Xmx8g

 

重新啟動 Search VM

 

另外、Elasticsearch 節點的 Index 檔案備份也要安排,因為 Rebuild Index 的時間成本很高。

所有的索引檔案都被安排在此:/data/search/elasticsearch/nodes/

務必安排定期備份以降低任何資料毀損的風險。

 

– 文件尾 --