Data Enginnering/Elastic

[Elasticsearch] 샤딩(Sharding), kBwrtn/s vs kBread/s 비교

Ctrl_engineer 2024. 11. 5. 22:06

 

 

샤딩 (Sharding)

샤드 개수 정하기

레플리카는 데이터를 복제하는 것이다.

엘라스틱 서치에서는 샤드 1개가 50GB를 넘지 않도록 권장한다.
레플리카가 많아질 수록 색인 성능은 떨어지고, 읽기 성능은 좋아진다.
반대로 레플리카가 적으면 색인 성능은 좋지만, 읽기 성능은 떨어진다.

레플리카가 많은 경우,
데이터를 여러 번 복사해야 하므로 색인 성능은 떨어진다.
읽기 성능은 데이터를 조회할 때의 속도이다. 레플리카가 여러 개라면, 클라이언트가 요청한 읽기 작업을 복제분들로 분산시킬 수 있기 때문에 더 많은 요청을 빠르게 처리할 수 있다.

샤드가 메모리에 주는 부하

노드의 힙 메모리는 Elasticsearch에서 데이터를 처리하고 관리하기 위해 사용하는 Java 힙 메모리를 의미합니다.
각 샤드의 인덱스 정보를 유지하는 데 사용되므로, 샤드가 많아질수록 노드의 메모리 부하가 증가합니다.
일반적으로 1GB의 힙 메모리당 약 20개의 샤드를 유지할 수 있으며, 이보다 낮은 수가 적당합니다.
이를 통해 시스템 성능을 유지하고, 불필요한 부하를 방지할 수 있습니다.

 

 


kBwrtn/s vs kBread/s 비교

 

kB_wrtn/s와 kB_read/s는 각각 디스크 쓰기디스크 읽기의 초당 속도를 나타냅니다. 이 두 값을 비교하면 시스템이 어떻게 데이터를 처리하고 있는지, 특히 읽기와 쓰기 작업의 비율을 이해하는 데 유용합니다.

1. kB_wrtn/s (초당 쓰기 속도)

  • 디스크로 기록되는 데이터의 양을 나타냅니다. 이 값이 높다는 것은 많은 데이터를 디스크에 쓰고 있다는 뜻입니다.
  • Elasticsearch에서 힙 메모리가 작을 때, 쓰기 작업이 빈번하게 발생하여 kB_wrtn/s 값이 높아질 수 있습니다. 디스크에 자주 쓰면, 디스크 I/O가 늘어나기 때문에 시스템의 성능에 영향을 줄 수 있습니다.

2. kB_read/s (초당 읽기 속도)

  • 디스크에서 읽는 데이터의 양을 나타냅니다. 이 값이 높으면, 디스크에서 많은 데이터를 읽고 있다는 의미입니다.
  • Elasticsearch에서 힙 메모리가 클 경우, 메모리에서 더 많은 데이터를 처리할 수 있어 kB_read/s 값이 높아질 수 있습니다. 이는 시스템이 메모리에서 데이터를 효율적으로 읽어오고 있으며, 디스크에 의존하는 비율이 낮아졌다는 것을 의미합니다.

두 값의 비교

  • 힙 메모리가 작을 때: 메모리에 데이터를 많이 저장하지 못하므로, 자주 디스크에 쓰고 읽어야 합니다. 이 경우 kB_wrtn/s와 kB_read/s 둘 다 높은 값을 가질 수 있습니다.
  • 힙 메모리가 클 때: 메모리 내에서 데이터를 많이 처리하게 되어, 디스크에 쓰는 빈도가 줄어 kB_wrtn/s가 낮아지고, 메모리에서 읽는 빈도가 늘어 kB_read/s가 높아집니다. 이 상황은 Elasticsearch의 성능을 최적화하는데 유리합니다.

즉, kB_wrtn/s와 kB_read/s의 비율을 살펴보면 시스템이 메모리와 디스크를 얼마나 효율적으로 사용하는지 파악할 수 있습니다.