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

Elasticsearch 3TB 인덱스 Reindex 작업
이 문서에서는 Elasticsearch 3TB의 대용량 인덱스에 대한 Reindex 작업을 다루며, 이 작업을 하면서 겪었던 이슈와 해결 방안, 그리고 현재 결과에 대해 다룹니다. 또한, 속도와 안정성을 높이기 위해 취해야 할 조치와 몇 가지 팁도 제시합니다. 현재 다나와 검색 시스템은 3.X TB의 데이터를 레플리카를 포함하여 10 ~ 11 시간에 걸쳐 색인하고 있습니다.
Reindex 작업의 속도에 변화를 주는 요소
-
replica는 Reindex 완료 후에 생성하자. Reindex 시 replica는 포함하지 않는 것이 좋습니다.
-
refresh_interval은 -1로 설정한다. 인덱스의 refresh_interval은 인덱싱된 문서를 검색할 수 있는 시점에 대해 설정하는 옵션입니다. 추천하는 방법은 색인 속도에 영향이 없을 때까지 수치를 증가시켜 최대 속도에 도달하는 지점을 찾아내는 것입니다.
-
샤드 수가 속도에 영향을 미침. 작업 속도는 프라이머리 샤드 수에 비례합니다. 샤드 수가 올라가면 증가하고, 샤드 수가 낮으면 감소합니다.
-
대용량의 문서 변경 분에 대해 적용하기 힘들기 때문에 작업 속도는 빠르면 좋지만 자원 사용량을 고려해야 함.
트러블 슈팅
-
es_rejected _excutution _exception 큐 자원이 부족하다는 뜻으로 검색 요청 시 큐 사이즈를 초과해서 발생합니다. target_time을 조절해서 큐를 빨리 소진하도록 하는 wait_time을 증가시켜 사용량을 감소시키는 방법으로 해결했습니다.
-
circuit_breaker _exception 메모리 사용량과 관련된 이슈로 작업 시간이 길다 보니 중간 중간 검색, 색인 부하가 생기면 발생할 수 있습니다.
정리
대용량의 문서를 색인할 때 발생할 수 있는 문제점과 해결 방법을 정리했습니다. 설정 값은 시스템 상황과 검색/색인 부하에 따라 각자 다르게 설정할 수 있겠습니다. 이러한 대용량 색인 데이터를 가진 시스템을 구성할 때 참고하시면 좋겠습니다.