노드 실행환경과 JVM 옵션
루씬은 독립적으로 실행될 수 없는 라이브러리
엘라스틱서치가 루씬 라이브러리를 임포트하는 방식으로 활용
엘라스틱서치 릴리스 노트
루씬 라이브러리가 버전업을 하면 엘라스틱서치에서도 새롭게 버전업된 룼니을 기반으로 하는 새로운 버전의 엘라스틱서치를 릴리스한다
실행 시 자바 8 이상을 사용해야 하는 이유
- 큰 물리 메모리 사용
- 다수의 CPU 사용
- 자바 8에 도입된 스트림과 람다 표현식을 사용하면 개발자가 따로 처리해주지 않아도 다수의 CPU에서 동시에 데이터를 처리할 수 있다
항상 최신 버전의 엘라스틱서치를 사용해야 하는 이유
엘라스틱서치는 6버전 부터 자바 8 이상을 사용하도록 강제하고 있다.
- 자바 버전과 루씬 버전, 그리고 엘라스틱서치 자체에서 개발된 기능들을 모두 고려해서 하위 호환성을 고려해야 하는데 이는 매우 힘들다.
- 엘라스틱서치에서는 각 버전에 따른 수명 관리를 한다. 사용하는 버전의 수명이 끝나기 전에 새로운 버전으로 업데이트를 해야 한다.
엘라스틱서치에 적용된 JVM 옵션
- 엘라스틱서치는 분산 시스템의 특성상 스케일 인/스케일 아웃이 빈번하게 발생할 수 있다. ReIndex와 같은 작업에 의해 일어나는 데이터 리밸런싱에 의해 많은 메모리를 사용한다. 그렇기 때문에 성능을 향상시키려면 다수의 JVM 옵션을 반드시 튜닝해야 한다.
- 하지만! 우리가 JVM을 튜닝 할 필요는 없다. 엘라스틱서치가 알아서 해준다.
- 그들이 잘 만들어 놨으니 우리가 튜닝하려하지 말고 그대로 사용하자!