Danawa Tech Blog

Elasticsearch 3TB의 인덱스를 reindex 하는 방법

thumbnail

Elasticsearch 3TB 인덱스 Reindex 작업

이 문서에서는 Elasticsearch 3TB의 대용량 인덱스에 대한 Reindex 작업을 다루며, 이 작업을 하면서 겪었던 이슈와 해결 방안, 그리고 현재 결과에 대해 다룹니다. 또한, 속도와 안정성을 높이기 위해 취해야 할 조치와 몇 가지 팁도 제시합니다. 현재 다나와 검색 시스템은 3.X TB의 데이터를 레플리카를 포함하여 10 ~ 11 시간에 걸쳐 색인하고 있습니다.

Reindex 작업의 속도에 변화를 주는 요소

  1. replica는 Reindex 완료 후에 생성하자. Reindex 시 replica는 포함하지 않는 것이 좋습니다.

  2. refresh_interval은 -1로 설정한다. 인덱스의 refresh_interval은 인덱싱된 문서를 검색할 수 있는 시점에 대해 설정하는 옵션입니다. 추천하는 방법은 색인 속도에 영향이 없을 때까지 수치를 증가시켜 최대 속도에 도달하는 지점을 찾아내는 것입니다.

  3. 샤드 수가 속도에 영향을 미침. 작업 속도는 프라이머리 샤드 수에 비례합니다. 샤드 수가 올라가면 증가하고, 샤드 수가 낮으면 감소합니다.

  4. 대용량의 문서 변경 분에 대해 적용하기 힘들기 때문에 작업 속도는 빠르면 좋지만 자원 사용량을 고려해야 함.

트러블 슈팅

  1. es_rejected _excutution _exception 큐 자원이 부족하다는 뜻으로 검색 요청 시 큐 사이즈를 초과해서 발생합니다. target_time을 조절해서 큐를 빨리 소진하도록 하는 wait_time을 증가시켜 사용량을 감소시키는 방법으로 해결했습니다.

  2. circuit_breaker _exception 메모리 사용량과 관련된 이슈로 작업 시간이 길다 보니 중간 중간 검색, 색인 부하가 생기면 발생할 수 있습니다.

정리

대용량의 문서를 색인할 때 발생할 수 있는 문제점과 해결 방법을 정리했습니다. 설정 값은 시스템 상황과 검색/색인 부하에 따라 각자 다르게 설정할 수 있겠습니다. 이러한 대용량 색인 데이터를 가진 시스템을 구성할 때 참고하시면 좋겠습니다.