관리 메뉴

피터의 개발이야기

[Elasticsearch] Data Node 볼륨 병목현상 확인 및 처리 본문

DevOps/Elasticsearch

[Elasticsearch] Data Node 볼륨 병목현상 확인 및 처리

기록하는 백앤드개발자 2023. 1. 16. 13:21
반응형

ㅁ 개요 

 ㅇ CloudWatch 볼륨 지표상에서 Elasticsearch Data Node 볼륨의 병목현상이 발견됨.

 ㅇ 병목현상의 원인 분석 및 해결 과정 정리

 

 

ㅁ 병목현상 확인

 ㅇ data node의 볼륨 IO가 병목이 발생하여 IO가 100% 상황 발생하였다. 

 

 

ㅁ 원인분석

GET /_nodes/hot_threads?pretty

 ㅇ 키바나의 Dev Tools를 이용하여 부하가 발생하는 스래드를 찾았다.

 

 

100.0% [cpu=71.2%, other=28.8%] (500ms out of 500ms) cpu usage by thread 'elasticsearch[elasticsearch-data-0][write][T#1]'
5/10 snapshots sharing following 30 elements
java.base@17.0.1/sun.nio.ch.FileDispatcherImpl.force0(Native Method)
java.base@17.0.1/sun.nio.ch.FileDispatcherImpl.force(FileDispatcherImpl.java:82)
java.base@17.0.1/sun.nio.ch.FileChannelImpl.force(FileChannelImpl.java:465)
app//org.elasticsearch.index.translog.TranslogWriter.syncUpTo(TranslogWriter.java:481)
app//org.elasticsearch.index.translog.Translog.ensureSynced(Translog.java:844)

 ㅇ data-0에서 sharding을 하는 과정 중에 파일을 생성하는 과정에 병목이 발생한 것으로 판단하였다. 구제적으로 설명하면, Elasticsearch는 데이터의 유실을 위해 replica를 생성하여 이중화하고 있다. 이 이중화를 위해 복제본 파일을 생성화는 과정에서 병목이 발생하였기에 긴급으로 복제본 생성을 중단시켜야 했다.

 

 

ㅁ 복제본 생성 중지 방법

 ㅇ kibana > Stack Management > Index Management로 이동한다.

 ㅇ 오늘자 Indices를 선택하여 replicas를 0으로 수정하였다.

 

 

ㅁ 병목 해소 확인

 ㅇ 병목현상이 해소되었고, 오히려 replica 작업이 줄면서 data-1 노드의 볼륨에 여유가 생겼다.

 

 

ㅁ 함께 보면 좋은 사이트

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/index-modules.html#dynamic-index-settings 

 

Index modules | Elasticsearch Guide [7.17] | Elastic

Expert users only. This setting enables some very expensive processing at shard startup and is only ever useful while diagnosing a problem in your cluster. If you do use it, you should do so only temporarily and remove it once it is no longer needed. Elast

www.elastic.co

 

 

반응형
Comments