ElasticSearch: 환경설정 중 리소스 문제
문제 상황
./bin/elasticsearch로 ES를 실행했을 때, 두가지 문제가 발생했다.
1. warning과 timeout 로그 출력.
2. 새 터미널에 연결할 수 없거나 응답이 매우 느리다.
3. EC2 콘솔 모니터링에서 cpu 사용량이 매우 높음.
원인
시스템 리소스를 고려하지않은 환경 설정으로 인해 Thrashing이 발생한 것으로 보인다.
해결
디폴트 환경설정이 ES에 할당된 jvm 힙 메모리를 확인하고, 그 값을 그대로 사용한다.
상세 내용
-
실습 환경의 리소스
-
클라우드 환경 AWS EC2 인스턴스 유형 t2.micro : 프리티어 CPU 1 CORE Memory 1 GB -
Elasticsearch의 jvm 힙 메모리 설정을 변경하는 실습을 진행한 후 문제가 발생했다.
vi ./config/jvm.options
-xms512mb -xms512mb
-
기존 터미널이 응답하지않아서, putty를 종료했다. 새 터미널 또한 연결이 되지 않았다. AWS EC2 콘솔을 통해 확인해보니 CPU 사용률이 80%를 웃돌았다.
-
두 개의 터미널을 열고 한 쪽은 ES를 실행하고, 다른 한 쪽은 top를(프로세스를 모니터링하는 명령어) 실행했다. ES 프로세스의 상태를 확인하려했는데 의외의 프로세스를 발견했다.
-
프로세스 번호가 84고 root에 의해 실행되는 kswapd0 프로세스에 의해 대부분의 cpu가 사용중 이었다.
-
[ stackoverflow에서 찾은 kswapd0 프로세스에 대한 설명 ]
ES에 필요한 메모리보다 EC2 인스턴스의 물리 메모리가 부족해서 많은 SWAP이 필요했던것으로 보인다. 시스템 리소스 부족으로 인한 Thrashing의 사례라고 볼 수 있을 것 같다. -
jvm.options의 디폴트 설정값에 의한 heap size를 388mb였다. 이 상태에선 ES가 정상작동한다.
Author And Source
이 문제에 관하여(ElasticSearch: 환경설정 중 리소스 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jsjg73/ElasticSearch-환경-설정-중-리소스-문제저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)