Elasticsearch에서 mlock이 정상적으로 되는 방법(es의 mlock 설정하기)
Elasticsearch에서 mlock이 정상적으로 되는 방법
mlock을 하지 않은 설정에서 서버 시작을 하면, log에서 다음과 같은 warn이 발생한다.
[2015-02-25 15:36:46,784][WARN ][common.jna ] Unable to lock JVM memory (ENOMEM). This can result in part of the JVM being swapped out. Increase RLIMIT_MEMLOCK (ulimit).
이를 위해서 다음과 같은 작업을 진행한다.
1. swap을 끈다.
$ sudo swapoff -a
2. swappiness를 끈다. (최신 커널에서는 vm.swappiness의 값이 0 인 상태에서 스왑을 쓰면 os에서 kill할 수 있어서 1로 설정한다. 구 커널에서는 vm.swappiness를 0으로 해도 상관없다.)
$ sudo sysctl vm.swappiness=1
$ cat /proc/sys/vm/swappiness
1
1,2 위의 작업이 재시작 이후에도 동작되도록 설정
vi /etc/rc.d/rc.local
3. /etc/security/limits.conf 파일 추가
* soft memlock unlimited
* hard hemlock unlimited
4. conf/elaticsearch.yml 파일에서 bootstrap.mlockall: true으로 변경한다.
5. logout후 login이 하고 elasticsearch 실행
$ curl http://localhost:9200/_nodes/process?pretty
전체 클러스터에서 mlock이 정상적으로 되었는지 체크할 수 있다.