Elasticsearch 운영중 기억에 남는 오류를 기록해본다..
해당 에러는 요청 작업에 의해서 OutOfMemoryError가 발생되는 것을 방지 하기 위해 차단하는것을 말한다.
해결법
1. 힙메모리 올리기
elasticsearch/config/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms8g
-Xmx8g
서버 메모리의 여유가 있을 경우 힙메모리를 늘려서 해결 할 수 있다.
Elasticsearch에서는 최대 메모리 설정 수치는 32g이하 이고, 서버 메모리의 절반을 설정하는것을 권장하고 있다.
2. 메모리 임계치 올리기
https://www.elastic.co/guide/en/elasticsearch/reference/current/circuit-breaker.html
Circuit breaker settings | Elasticsearch Guide [8.4] | Elastic
Circuit breaker settingsedit Elasticsearch contains multiple circuit breakers used to prevent operations from causing an OutOfMemoryError. Each breaker specifies a limit for how much memory it can use. Additionally, there is a parent-level breaker that spe
www.elastic.co
위 Elasticsearch 공식 가이드를 확인 하여 메모리 임계치 올리기
3. 인덱스 최적화
forcemerge
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-forcemerge.html
Force merge API | Elasticsearch Guide [8.4] | Elastic
We recommend only force merging a read-only index (meaning the index is no longer receiving writes). When documents are updated or deleted, the old version is not immediately removed, but instead soft-deleted and marked with a "tombstone". These soft-delet
www.elastic.co
index document 삭제처리 시 실제 물리서버 내에서 삭제되는 것이 아니라 삭제 표시만 하고, 마찬가지로
수정 처리시 기존 document를 삭제 표시 후 새로운 데이터를 삽입하는 프로세스이다.
주기적으로 Elasticsearch 자체에서 삭제 표시된 데이터를 정리를 한다고 하지만 메모리가 부족 할 경우 forcemerge를 통하여 많은 여유공간을 확보 할 수 있다.
주의점이 있는데 forcemerge를 사용할 index는 더이상 쓰기 작업이 없는 인덱스에만 사용하는것을 권장하고 있다.
나의 환경에서는 색인 데이터를 월별로 저장하고 있기 때문에 오래된 인덱스를 전부 강제병합으로 처리하여 여유공간을 확보했다.
'Elasticsearch(엘라스틱서치)' 카테고리의 다른 글
[Elasticsearch] Linux에 설치시 설정값 정리 (0) | 2021.08.18 |
---|---|
[Elasticsearch] N-gram을 사용하여 인물 이름 검색 구현 (0) | 2021.06.21 |
[Elasticsearch] 엘라스틱서치 한글 형태소 분석기 노리(nori) 설치하기 (0) | 2020.11.30 |
[Elasticsearch, Kibana] 엘라스틱 서치, 키바나 로컬 환경에 구축하기 (0) | 2020.11.30 |