Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 카프카
- 월미도
- Apache Kafka
- DFS
- 스프링부트
- 코드업
- aws
- 쿠버네티스
- 자료구조
- 클라우드
- 클라우드 컴퓨팅
- Spring Boot
- 백트래킹
- VPC
- Spring
- Elasticsearch
- gcp
- Kafka
- 오일러프로젝트
- Docker
- Spring Data JPA
- 로드밸런서
- 알고리즘
- 백준
- 스프링
- JPA
- springboot
- 스프링 부트
- 인천여행
- 프로그래밍문제
Archives
- Today
- Total
GW LABS
기초부터 다지는 ElasticSearch 운영 노하우 (6) - 클러스터 성능 모니터링과 최적화 본문
Book-Review/Programing
기초부터 다지는 ElasticSearch 운영 노하우 (6) - 클러스터 성능 모니터링과 최적화
GeonWoo Kim 2022. 8. 28. 15:187.1 클러스터의 상태 확인하기
- cat API: 클러스터의 상태, 노드의 상태, 샤드의 상태 등 정보 확인 기능
- /_cat/health?format=json&pretty
- status
- green: 모든 샤드가 정상적으로 동작하고 있는 상태
- yellow: 모든 프라이머리 샤드는 정상적으로 동작하고 있으나, 일부 혹은 모든 레플리카 샤드가 정상적으로 동작하고 있지 않은 상태
- red: 일부 혹은 모든 프라이머리 샤드/레플리카 샤드가 정상적으로 동작하고 있지 않은 상태
- 데이터 유실 가능성이 있다.
7.2 노드의 상태와 정보 확인하기
- /_cat/nodes
- /_cat/nodes?v&h=id,name,disk.used_percent
- 조회하고 싶은 노드의 정보값을 파라미터로 넘겨 확인할 수 있다.
7.3 인덱스의 상태와 정보 확인하기
- /_cat/indices
- /_cat/indices?v&h=index,fielddata.memory_size
- 조회하고 싶은 인덱스의 정보값을 파라미터로 넘겨 확인할 수 있다.
- 인덱스의 상태는 클러스터 상태와 연동된다.
7.4 샤드의 상태 확인하기
- /_cat/shards
- STARTED: 정상적인 상태
- INITIALIZING: 샤드를 초기화하는 상태. 최초 배치 시, 혹은 샤드에 문제가 발생하여 새롭게 배치할 때의 상태이다.
- RELOCATING: 샤드가 현재의 노드에서 다른 노드로 이동하고 있는 상태. 새로운 데이터 노드가 추가되거나, 기존 데이터 노드에 문제가 생겨서 샤드가 새로운 노드에 배치되어야 할 때의 상태이다.
- UNASSIGNED: 샤드가 어느 노드에도 배치되지 않은 상태. 해당 샤드가 배치된 노드에 문제가 생기거나 클러스터의 라우팅 정책에 의해 배치되지 않은 상태이다.
7.5 stats API로 지표 확인하기
- /_cluster/stats
- /_nodes/stats
7.6 성능 확인과 문제 해결
- 색인성능: 초당 몇 개의 문서를 색인할 수 있는지, 그리고 각 문서를 색인하는 데 소요되는 시간이 어느 정도인지를 나타낸다.
- 검색성능: 초당 몇 개의 쿼리를 처리할 수 있는지, 그리고 각 쿼리를 처리하는 데 소요되는 시간이 어느 정도인지를 나타낸다.
- GC성능: GC가 너무 자주, 오래 발생하면 Stop-The-World 같은 응답 불가 현상이 발생한다. Stop-The-World가 얼마나 자주, 오래 발생하는지를 나타낸다.
- rejected: 클러스터가 처리할 수 없는 수준의 요청이 들어오면 클러스터는 요청을 거절하게 되는데 그 횟수를 나타낸다.
7.6.1 색인 성능 살펴보기
- 클러스터 색인 성능
- 프라이머리 샤드에 대한 색인 성능
- 주기적으로 stats API를 호출하면서 index_total, index_time_in_millis를 통해 단위시간당 색인성능을 계산할 수 있다.
- 전체 샤드에 대한 색인 성능
- 프라이머리 샤드에 대한 색인 성능
7.6.2 검색 성능 살펴보기
- query: 사용자의 검색 요청이 노드에 전달되어 문서를 찾는 과정
- fetch: 찾은 문서들을 리스트의 형태로 만들어서 정리하는 과정
- 마찬가지로 주기적으로 stats API를 호출하면서 query, fetch 성능의 단위시간당 성능을 계산할 수 있다.
7.6.3 GC 성능 살펴보기
- /_nodes/stats를 통해 노드별 지표들을 확인한다.
- young GC, old GC를 단위시간별로 조회하면서 성능을 계산한다.
- 수십에서 수백ms 정도의 성능을 목표로 해야한다.
7.6.4 rejected 살펴보기
- ElasticSearch의 요청 큐에 처리량 이상이 요청되어 처리를 거부하는 상태
- 각 스레드(write, forcemerge 등)별로 rejected 수를 확인할 수 있다.
- 점진적으로 요청이 많아진 경우에는 노드를 추가해야한다.
- 순간적으로 요청이 많아진 경우에는 큐를 늘리는게 도움이 될 수 있다.
- thread_pool.write.queue_size: 10000
- thread_pool.search.max_queue_size: 10000
- 위와 같은 스레드 풀을 조정하면서 순간적 트래픽에 대응할 수 있다.
'Book-Review > Programing' 카테고리의 다른 글
실전 카프카 개발부터 운영까지 (1) - 카프카 개요 (0) | 2022.08.31 |
---|---|
기초부터 다지는 ElasticSearch 운영 노하우 (7) - 검색 엔진으로 활용하기 (0) | 2022.08.30 |
기초부터 다지는 ElasticSearch 운영 노하우 (5) - 클러스터 운영하기 (0) | 2022.08.27 |
기초부터 다지는 ElasticSearch 운영 노하우 (4) - 클러스터 구축하기 (0) | 2022.08.25 |
기초부터 다지는 ElasticSearch 운영 노하우 (3) - ElasticSearch 기본 개념 (0) | 2022.08.24 |
Comments