본문 바로가기
SW Developer

elasticsearch 죽는현상 분석 error (code=exited, status=127)

by ashespia 2020. 7. 28.
SMALL

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

 

Set JVM heap size via jvm.options | Elasticsearch Reference [5.4] | Elastic

Set JVM heap size via jvm.options By default, Elasticsearch tells the JVM to use a heap with a minimum and maximum size of 2 GB. When moving to production, it is important to configure heap size to ensure that Elasticsearch has enough heap available. Elast

www.elastic.co

 

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% 변경됨

 

LIST

댓글