[ElasticSearch] Logstash 와 Elasticsearch / 디스크 I/O 병목

2024. 11. 24. 19:06·Data Enginnering/Elastic

출처: Elastic

Logstash 와 Elasticsearch 노드의 관계

1. Logstash 노드의 역할

  • 데이터 수집: 다양한 소스(파일, 데이터베이스, API 등)로부터 데이터를 가져옵니다.
  • 데이터 변환: 필터링, 포맷 변경, 필드 추가/삭제 등의 작업을 수행해 데이터를 Elasticsearch가 처리할 수 있는 형태로 가공합니다.
  • 데이터 전송: 변환된 데이터를 Elasticsearch 클러스터에 전송합니다.

2. Elasticsearch 노드의 역할

  • Logstash에서 받은 데이터를 처리:
    • Logstash에서 전송된 데이터는 Elasticsearch 클러스터로 들어옵니다.
    • Elasticsearch는 인덱스와 Shard를 기반으로 데이터를 분배합니다.
  • 데이터 저장:
    • 데이터는 적절한 Primary Shard에 저장됩니다.
    • Elasticsearch는 데이터의 문서 ID와 Shard 개수를 사용해 라우팅 키를 계산하고, 데이터가 저장될 Shard를 결정합니다.

3. 전체적인 데이터 저장 구조

  • Logstash → Elasticsearch 노드 → Primary Shard:
    • 데이터를 수집하고 전송하는 Logstash는 Primary Shard의 역할이나 개수에 영향을 주지 않습니다.
    • Elasticsearch가 데이터를 수신하고, 적절한 Shard에 저장하며, 이를 Replica로 복제하는 과정을 자동으로 처리합니다.

디스크 I/O 병목 및 해결 방안

출처: Statsig

1. 디스크 I/O와 Elasticsearch의 관계

  • Elasticsearch는 **색인(indexing)**과 검색(querying) 과정에서 디스크 I/O를 사용합니다.
  • 읽기 I/O(kB_read/s):
    • 데이터를 검색하거나 쿼리 결과를 가져올 때 발생.
  • 쓰기 I/O(kB_wrtn/s):
    • 데이터를 색인하거나, Lucene 세그먼트 생성 및 병합 시 발생.

2. 병목이 발생하는 주요 상황

색인 작업

  • 대량 데이터 색인 시 Translog 기록 및 Segment Merge로 쓰기 I/O 과부하 발생.
  • Replica Shard로 데이터 복제 시 추가 쓰기 작업.

검색 작업

  • 캐시 미스(Cache Miss)로 디스크에서 반복적인 데이터 읽기 발생.
  • 집계(aggregation) 또는 정렬 작업으로 과도한 읽기 I/O 발생.

클러스터 관리 작업

  • Shard 재배치: Shard가 이동하며 읽기/쓰기 I/O 증가.
  • Snapshot 작업: 백업 과정에서 대량 읽기 I/O 발생.
  • Recovery 작업: 노드 장애 복구 시 Primary 및 Replica Shard에서 과도한 읽기/쓰기 발생.

잘못된 설정

  • Shard 크기 설계 불량: 너무 작거나 너무 큰 Shard는 I/O 병목을 초래.
  • Refresh Interval이 너무 짧아 쓰기 I/O 과부하 발생.

3. 병목의 징후

  • I/O wait 증가:
    • CPU가 디스크 작업 완료를 기다리는 시간이 길어짐.
  • 색인 지연(Indexing Lag):
    • 색인 속도가 느려지고, Elasticsearch가 쓰기 작업을 처리하지 못함.
  • 쿼리 응답 시간 증가:
    • 검색 속도가 느려지고 응답 시간이 길어짐.

4. 병목 원인

  1. 디스크 속도 문제:
    • 느린 HDD 사용.
    • 디스크의 읽기/쓰기 요청이 처리량을 초과.
  2. 캐시 부족:
    • JVM 힙 메모리나 파일 시스템 캐시 부족으로 디스크 접근 증가.
  3. Shard 관리 문제:
    • 데이터가 특정 노드에 집중되어 부하 발생.
  4. 대량 삭제 및 업데이트:
    • 대량 삭제 요청이 병합 작업을 유발해 쓰기 I/O 증가.

5. 해결 방안

하드웨어 최적화

  • SSD 사용: 읽기/쓰기 속도 향상.
  • RAID 설정: RAID 0(속도) 또는 RAID 10(속도+안정성) 적용.

Elasticsearch 설정 최적화

  • Shard 크기 조정: 적정 크기(20~50GB) 유지.
  • Refresh Interval 늘리기: 색인 작업 중에는 간격을 늘려 쓰기 빈도를 낮춤.
  • Translog 설정: durability=async로 설정해 쓰기 I/O 감소.

작업 스케줄링

  • Shard 재배치, Snapshot 생성 같은 I/O 집중 작업을 비활성 시간대에 수행.

캐시 활용

  • JVM 힙 메모리를 적절히 설정해 파일 시스템 캐시를 극대화.
  • Elasticsearch 노드에서 자주 사용하는 데이터를 메모리에 적재.

 

'Data Enginnering > Elastic' 카테고리의 다른 글

[ElasticSearch] 성능 최적화의 해석  (0) 2024.11.24
[Elasticsearch] 샤딩(Sharding), kBwrtn/s vs kBread/s 비교  (0) 2024.11.05
[ElasticSearch] 검색 성능 최적화  (1) 2024.11.04
[ElasticSearch] 데이터 처리, 검색 성능 최적화  (5) 2024.11.02
[ElasticSearch] 샤드 (Shard) & 인덱싱 (Indexing)  (0) 2024.11.01
'Data Enginnering/Elastic' 카테고리의 다른 글
  • [ElasticSearch] 성능 최적화의 해석
  • [Elasticsearch] 샤딩(Sharding), kBwrtn/s vs kBread/s 비교
  • [ElasticSearch] 검색 성능 최적화
  • [ElasticSearch] 데이터 처리, 검색 성능 최적화
Ctrl_engineer
Ctrl_engineer
Ctrl 키는 혼자일 때보다 다른 키와 함께할 때 진짜 힘을 발휘합니다. 데이터도, 사람도 마찬가지입니다. 연결되고 흐를 때, 세상은 더 나은 방향으로 움직입니다. 저는 데이터의 흐름을 설계하고, 신뢰를 심는 엔지니어가 되고자 합니다. 이곳은, 그 여정의 작은 흔적들을 기록하는 공간입니다.
  • Ctrl_engineer
    Ctrl the flow
    Ctrl_engineer
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Research (8)
        • Raspberry Pi (8)
      • Data Enginnering (24)
        • Cloud (3)
        • Elastic (6)
        • Database (9)
        • Pipeline (3)
      • CS STUDY (0)
        • Computer Science (0)
        • DataStructure & Algorithm (0)
      • Programming (13)
        • Python (13)
      • Mathematics and Statistics (10)
      • Data Science (3)
        • Data Insight (2)
        • Learning (0)
        • ML & DL (0)
      • DIARY (0)
      • TIL (Today I Learned) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Statistics and Probability
    py4e
    climb-mates
    indexing
    SQL
    proxyjump 설정
    라즈베리파이 네트워크 설정
    점프투파이썬
    linear algebra
    elasticSearch
    부스트코스
    spark
    라즈베리파이5
    티스토리챌린지
    Khan
    ssh 비밀번호 없이 접속
    heap size
    오블완
    Khan Academy
    3blue1brown
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Ctrl_engineer
[ElasticSearch] Logstash 와 Elasticsearch / 디스크 I/O 병목
상단으로

티스토리툴바