-
[Elastic Search] vm.max_map_count 설정Engineering/Elastic Search 2020. 7. 20. 17:34반응형
엘라스틱서치 서버를 가동시키면 아래와 같은 에러 메시지와 함께 서버가 실행되지 않는 문제를 겪는 경우가 있습니다.
ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
위 에러는 운영체제에서 기본으로 설정되어 있는 mmap 수가 너무 작게 설정되어 있기 때문에 발생하는 것입니다. 엘라스틱서치에서는 bootstrap 과정에서 mmap 수가 262,144 이하이면 실행되지 않도록 되어 있습니다. 이를 해결하기 위해서는 vm.max_map_count 값을 엘라스틱서치가 동작할 수 있는 최소 값인 262,144로 수정해야 합니다.
리눅스에서 mmap 카운트 조회 방법
cat /proc/sys/vm/max_map_count
vm.max_map_count 값 수정 방법
sudo sysctl -w vm.max_map_count=262144
위와 같이 sysctl 명령으로 값을 수정하는 방법은 운영체제가 재부팅되면 기본값으로 다시 초기화됩니다. 이를 영구적으로 설정하기 위해서는 /etc/sysctl.conf 파일에서 vm.max_map_count 를 설정하면 됩니다.
vm.max_map_count 값 영구적으로 설정하는 방법
/etc/sysctl.conf 경로의 설정 파일에 아래의 설정을 추가합니다.
vm.map_max_count=262144
위와 같이 /etc/sysctl.conf 를 설정하고 나서 운영체제를 재부팅하면 변경된 값이 적용됩니다.
최대 가상 메모리 크기 설정
루씬은 인덱스 생성 및 관리를 효율적으로 하기 위해 mmap을 이용해 메모리 매핑을 수행합니다. mmap은 커널 레벨의 메모리를 직접 할당받아 애플리케이션의 가상 메모리 주소에 매핑해서 동작하기 때문에 가상 메모리 크기에 제한을 없애야 합니다.
memory lock 사이즈를 unlimited로 영구적으로 설정하는 방법
/etc/security/limits.conf 경로의 설정파일에서 memlock 항목을 unlimited 로 수정합니다.
참고자료
엘라스틱서치 실무 가이드 <<권택환, 김동우, 김흥래, 박진현, 최용호, 황희정 지음>>
https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration-memory.html
http://jprante.github.io/lessons/2012/07/26/Mmap-with-Lucene.html
https://blog.thetaphi.de/2012/07/use-lucenes-mmapdirectory-on-64bit.html
반응형'Engineering > Elastic Search' 카테고리의 다른 글
[Elastic Search] 엘라스틱서치의 힙 크기 (1) 2020.07.15 [Elastic Search] 엘라스틱서치와 루씬의 인덱스 최적화 방법 (0) 2020.07.13 [Elastic Search] 세그먼트에 대한 정리 (0) 2020.07.11 [Elastic Search] 클러스터의 구성 요소 (0) 2020.07.09 [Elastic Search] 동의어 사전 (0) 2020.07.06