728x90
엘라스틱서치와 루씬 모두 Java 언어로 개발되었지만, 루씬은 독립적인 실행이 불가능하다
엘라스틱서치 릴리스 노트
https://www.elastic.co/downloads/past-releases?product=elasticsearch
Past Releases
www.elastic.co
- 엘라스틱 서치는 2010년에 오픈소스로 개발되어 현재는 9.xx 버전이 릴리스되고 있다.
- 엘라스틱서치는 루씬 기반으로 동작하기에 엘라스틱서치 버전에 따라 내부에서 사용하고 있는 루씬의 버전도 함께 달라진다.
- 루씬의 기능이 추가될 때마다 엘라스틱서치도 루씬의 새로운 기능을 기반으로 새롭게 릴리스된다.
실행 시 Java 8 이상을 사용해야 하는 이유
1) 큰 물리 메모리 사용
- 시대의 변화에 따라 자바 언어도 64 비트를 지원하기 시작하였고, 더 큰 힙메모리를 할당하는 것이 가능해졌다.
2) 다수의 CPU 사용
- 자바 언어가 8 버전으로 업데이트되면서 언어 차원에서 함수형 프로그래밍 방식이 도입되었다.
- 스트림/람다 표현식이 지원되기 시작하면서, 스트림을 통해 언어 차원에서 쉽게 멀티 코어로 함수를 동작시킬 수 있다.
항상 최신 버전의 엘라스틱서치를 사용해야 하는 이유
https://www.elastic.co/support/eol
Elastic Product End of Life Dates
End of life schedule for Elastic product releases, including Elasticsearch, Kibana, Logstash, Beats, and more....
www.elastic.co
- 엘라스틱서치는 빠르게 발전하고 있으며, 하위 호환성을 최대한 고려해 개발이 되지만 100% 호환되지는 않는다.
- 내부적으로 Java, 루씬 버전 모두 고려해야 하는데, 이 때문에 버전 업하기가 매우 힘들다.
- 각 버전에 따른 수명 관리를 별도로 하고 있으며, 특정 버전의 공식적인 지원 일정이 끝나기 전 사용자들이 새로운 버전으로 업데이트하기를 권장하고 있다.
자바 8에서 제공하는 JVM 옵션
- JVM 기반의 애플리케이션은 GC 메커니즘을 통해 일정 주기로 사용하지 않는 메모리를 자동으로 회수할 수 있다.
- -Xms(기본 Heap Size 설정), -Xms(최대 Heap 사이즈 설정), -XX:PermSize(기본 Perm 사이즈 설정).. 등 각 옵션으로 추가적인 설정이 가능하다.
엘라스틱서치에 적용된 JVM 옵션
- 앨라스틱서치도 JVM 위에서 실행되는 애플리케이션이기 때문에 실행 시 적용될 JVM 옵션을 튜닝해서 기본 설정으로 제공한다.
- 엘라스틱서치는 분산 시스템 특성항 스키일 인/아웃 이 빈번하게 발생할 수 있고, 장애를 복구 및 리밸런싱 같이 메모리를 많이 사용하는 작업이 빈번하기에 성능 향상을 위해 다수의 JVM 옵션을 튜닝해야 한다.
- JVM 옵션을 튜닝하는 것은 매우 어렵지만, 엘라스틱서치는 그동안 개발되어 오면서 문제를 지속적으로 개선해 왔고, JVM 옵션들도 대부분 최적화해서 제공된다.
- 일반적인 사용자는 JVM 옵션 설정할 필요 없이 기본적으로 제공하는 엘라스틱서치 옵션 그대로 실행하면 된다.
- 웬만하면 해당 옵션 수정은 하지 않는 것을 추천한다.
- 현재 기본적으로 제공하는 JVM 옵션들은 각종 문제에 대한 경험을 바탕으로 최적화한 값이다.
- 해당 옵션을 변경하면 운영 초기에는 유용한 것처럼 보일 수 있으나 시간이 지나 데이터가 커지면 결국 클러스터가 느려지고 불안정한 상태로 갈 가능성이 높다(기본값을 수정하지 말자)
- 기본 JVM 옵션을 수정해야 하는 일이 있다면, jvm.option 파일을 이용해 수정하면 된다.
참고
JVM 힙 크기가 1GB로 설정되어 있는 이유
엘라스틱서치가 실행할 수 있는 최소 힙 크기가 1GB로, 테스트를 할 수 있도록 설정되어 있는 것이다. 실제 운영 환경에서는 이보다 큰 값으로 설정해애 한다.
해당 옵션 값은 운영환경에 맞춰서 설정해야 한다.
그 외 옵션들은 웬만하면 기본 값을 사용하는 것을 추천한다.
728x90
'Elastic Search' 카테고리의 다른 글
| Ch10. 대용량 처리를 위한 시스템 최적화 - 엘라스틱서치와 가상 메모리 (0) | 2025.10.10 |
|---|---|
| Ch10. 대용량 처리를 위한 시스템 최적화 - 힙 크기를 32GB 이하로 유지해야 하는 이유 (0) | 2025.10.10 |
| Ch09. 엘라스틱서치와 루씬 이야기- 샤드 최적화 (0) | 2025.10.09 |
| Ch09. 엘라스틱서치와 루씬 이야기- 고가용성을 위한 Translog의 비밀 (0) | 2025.10.08 |
| Ch09. 엘라스틱서치와 루씬 이야기- 엘라스틱서치가 근실시간 검색을 제공하는 이유 (0) | 2025.10.07 |