강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

haechang.jung님의 프로필 이미지
haechang.jung

작성한 질문수

ElasticSearch Essential

여섯 번째 강의 - 색인 과정 이해하기

노드당 샤드 수 질문입니다.

해결된 질문

작성

·

76

0

안녕하세요. 질문있습니다.

 

만약 es 노드 n대를 운영중이라면 노드당 샤드수는 몇대가 적절할까요?

1400개일 경우 적절한지 혹은 2~3천개로 늘려도 괜찮을까요? 노드당 샤드수가 많을 경우 발생할 수 있는 문제점이 무엇인지 궁금합니다.

답변 3

1

haechang.jung님의 프로필 이미지
haechang.jung
질문자

답변 감사합니다!

0

강진우님의 프로필 이미지
강진우
지식공유자

아마도 ElasticSearch를 운영하면서 가장 많이 고민하게 되는 것들 중 하나가 노드 당 샤드 수 일 겁니다. 과연 노드 당 몇 개의 샤드를 가지는 게 적절한가 라는 건 ES를 운영하는 수많은 엔지니어들의 고민이 될 겁니다. 😅

첫 번째 질문인 1400개일 경우 적절한지 혹은 2~3천개로 늘려도 괜찮을까요? 부터 생각해 본다면, 제 개인적인 경험 상 2~3천개 까지도 크게 성능 저하가 없긴 했습니다. 다만, 그 때 당시 제가 사용하던 노드들의 하드웨어 사양이 꽤 좋았기 때문에 (CPU 코어 수 16개, 메모리 32GB 정도) 성능을 충분히 낼 수 있었을 거라고 생각 합니다. 결국 성능에 영향이 없다면 조금씩 계속 늘려가도 괜찮다고 생각 합니다.

두 번째 질문인 노드당 샤드수가 많을 경우 발생할 수 있는 문제점이 무엇인지 궁금합니다. 를 생각해 본다면, 이게 가장 중요한 질문이긴 한데, 결국 성능 저하가 발생할 수 있다는 것이겠죠. 노드 당 샤드 수가 많을 경우 힙메모리 사용량이 증가하고 이로 인해 GC가 자주 발생하게 되는 경우가 생길 거고, max shards per node 와 같은 설정을 변경하지 않으면 이로 인한 이슈가 발생할 수도 있겠죠. 결국 노드 당 샤드 수는 몇 개가 적절한가는 사용하는 노드의 사양에 따라 다를 겁니다. 샤드의 크기를 크게 해서 노드 당 샤드 수를 줄일 수도 있고, 샤드의 크기를 작게 해서 노드 당 샤드 수를 늘릴 수도 있구요. 중요한 건 설정을 계속 바꿔 가면서, 성능에 영향이 있느냐 없느냐를 모니터링 하는 방법 밖에 없습니다. 노드의 CPU, 메모리 사용량이 어떻게 변화 하는지, 색인 성능과 검색 성능, GC 성능이 어떻게 변화하는지를 계속 모니터링 하고 추적해 가면서 현재 환경에서의 가장 적절한 값을 찾아야 합니다.

위에 언급한 지표들 역시 환경에 따라 다를텐데, 이에 대한 기준도 세울 필요가 있습니다. 예를 들어 CPU Usage 30% 미만, 색인 성능은 100ms 미만, 검색 성능은 10ms 미만 을 성능의 마지노선을 삼겠다고 기준을 삼았다면 이에 맞게 노드 당 샤드 수를 늘리거나 줄이면서 저 지표들이 어떻게 변화하는지를 보는거죠. 그래서 본인의 환경에 맞는 최적의 값을 찾을 수 있어야 합니다.

 

0

안녕하세요, 인프런 AI 인턴입니다. haechang.jung님께서 질문하신 내용은 Elasticsearch에서의 노드당 샤드 수와 그에 따른 성능 문제에 관한 것입니다. 관련된 질문을 몇 가지 찾아보았으니 아래 내용을 참고해 주세요.

  1. 샤드 개수 늘리기

    • 이 질문에서는 Elasticsearch에서 샤드 개수를 늘리는 방법에 대해 다루고 있으며, 샤드 개수의 변화가 시스템 성능에 미치는 영향을 설명하고 있습니다.
  2. 여섯번째 강의 - 색인 과정 강의를 들으며

    • 실제 운영 중인 Elasticsearch에서의 샤드 최적화 및 Reindex API를 사용하는 방법에 대해 설명하고 있습니다. 이와 함께 노드당 샤드 수가 많을 경우 발생할 수 있는 성능 저하와 관련된 사례를 언급하고 있습니다.

샤드 수가 많을 경우 자주 발생하는 문제는 다음과 같습니다:
- 오버헤드 증가: 각 샤드는 독립적으로 자원을 사용하므로, 샤드 수가 많아질수록 메모리 및 CPU 사용량이 증가할 수 있습니다.
- 관리 복잡성: 여러 샤드로 인해 클러스터 운영 및 모니터링이 복잡해질 수 있습니다.
- 성능 저하: 특히 검색 요청 시 여러 샤드로부터 데이터를 병합하는 과정에서 성능이 저하될 수 있습니다.

일반적으로 노드당 샤드 수는 수백 개를 넘지 않도록 하는 것이 권장되며, 이는 서버의 하드웨어 사양이나 작업 부하에 따라 달라질 수 있습니다. 따라서 시스템의 로드와 상태를 지속적으로 모니터링하면서 적절한 샤드 수를 유지하는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

haechang.jung님의 프로필 이미지
haechang.jung

작성한 질문수

질문하기