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/
務必安排定期備份以降低任何資料毀損的風險。
– 文件尾 --