elasticsearch 사용하다 보면 elasticsearch 만 죽는 현상이 자주 발생한다.
status=127
service elasticsearch status 명령을 실행해보면 active 상태는 failed로 변경되어 있고 elasticsearch 죽어있다.
java.lang.OutOfMemoryError:를 찍고 elasticsearch 죽었음을 알수 있다.
[2020-07-28T16:11:16,855][WARN ][o.e.m.j.JvmGcMonitorService] [_-PZ93N] [gc][448921] overhead, spent [1.4s] collecting in the last [1.4s]
[2020-07-28T16:11:18,518][WARN ][o.e.m.j.JvmGcMonitorService] [_-PZ93N] [gc][448922] overhead, spent [1.6s] collecting in the last [1.6s]
[2020-07-28T16:11:19,991][WARN ][o.e.m.j.JvmGcMonitorService] [_-PZ93N] [gc][448923] overhead, spent [1.4s] collecting in the last [1.4s]
[2020-07-28T16:11:21,962][WARN ][o.e.m.j.JvmGcMonitorService] [_-PZ93N] [gc][448924] overhead, spent [1.9s] collecting in the last [1.9s]
[2020-07-28T16:11:29,493][WARN ][o.e.m.j.JvmGcMonitorService] [_-PZ93N] [gc][448925] overhead, spent [7.4s] collecting in the last [7.5s]
[2020-07-28T16:12:58,988][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [] fatal error in thread [elasticsearch[_-PZ93N][search][T#6]], exiting
java.lang.OutOfMemoryError: Java heap space
[2020-07-28T16:13:14,067][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [] fatal error in thread [elasticsearch[_-PZ93N][write][T#7]], exiting
java.lang.OutOfMemoryError: Java heap space
[2020-07-28T16:13:33,461][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [] fatal error in thread [elasticsearch[_-PZ93N][search][T#1]], exiting
java.lang.OutOfMemoryError: Java heap space
elasticsearch 공식 가이드 문서요약
- minimum heap size (Xms) and maximum heap size 최소 heap 사이즈와 최대 heap 사이즈를 동일하게 설정
- 전체 메모리의 50%이하 사용
이하는 공식 문서 내용
https://www.elastic.co/guide/en/elasticsearch/reference/5.4/heap-size.html
Kiban monitoring 설정에서 Node 정보로 JVM 상태를 확인 할 수 있다.
아무 동작하고 있지 않은 지금도 JVM Heap가 Max 상태로 돌고 있다.
즉 언제든 elasticsearch가 error code를 찍으면서 죽을 수 있다는 이야기
아래 화면에서 보면 JVM Heap 사용율이 96%
elasticsearch jvm 설정파일 위치
/etc/elasticsearch/jvm.options
현재 설정값 확인
-Xms1g
-Xmx1g
JVM Heap size 설정 변경
현재 ELK 서버의 전체 메모리는 8G
가이드 문서 대로 8G의 50%인 4G까지 JVM 설정을 변경
-Xms4g
-Xmx4g
4g로 변경후 kiban monitoring에서 jvm heap 확인 시 여유로워졌음을 확인 할 수 있다.
아래 화면에서 보면 JVM Heap 사용율이 96% -> 25% 변경됨
댓글