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이 정상적으로 되었는지 체크할 수 있다. 








Posted by '김용환'
,