미니옵빠의 code stubs

bootstrap.memory_lock 설정 후 Increase RLIMIT_MEMLOCK 오류가 뜨는 경우 본문

Elastic Stack/Elasticsearch

bootstrap.memory_lock 설정 후 Increase RLIMIT_MEMLOCK 오류가 뜨는 경우

미니옵빠 2017. 4. 21. 21:09

bootstrap.memory_lock 설정 후 Increase RLIMIT_MEMLOCK 오류가 뜨는 경우 log를 보면 아래와 같이 친절하게 설명해준다.


2017-04-21T20:37:39,605][WARN ][o.e.b.JNANatives         ] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory

[2017-04-21T20:37:39,607][WARN ][o.e.b.JNANatives         ] This can result in part of the JVM being swapped out.

[2017-04-21T20:37:39,607][WARN ][o.e.b.JNANatives         ] Increase RLIMIT_MEMLOCK, soft limit: 65536, hard limit: 65536

[2017-04-21T20:37:39,608][WARN ][o.e.b.JNANatives         ] These can be adjusted by modifying /etc/security/limits.conf, for example:

        # allow user 'xxx' mlockall

        xxx soft memlock unlimited

        xxx hard memlock unlimited


로그에서 시키는대로 /etc/security/limits.conf 파일에 현재 사용자의 mlockall 권한을 추가하고, 재실행하면 된다.

참고로 /etc/security/limits.conf 파일은 읽기전용 attr 이 설정되어 있으니 권한을 풀고 root 권한으로 수정하면 된다.


이후 ES를 실행하면 됨 (물론 해당 계정은 재접속해서)



그리고 bootstrap.memory_lock 설정은 메모리 swap을 없애서, 혹시라도 swap이 발생할 때 일어나는 성능 감소 현상을 줄이기 위해 설정한다.


참고

https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#bootstrap.memory_lock

https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration-memory.html#mlockall

https://www.elastic.co/guide/en/elasticsearch/reference/current/_memory_lock_check.html