[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
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • Research (9)
        • Raspberry Pi (9)
      • 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바