Logstash를 사용하여 ElasticSearch에 2억건의 데이터를 indexing 과정에 OutOfMemoryError가 나옴
CrateDB는 memory.breaker.limit 설정으로 각 쿼리에서 사용할 수 있는 메모리 상한선을 두고 있는데그 허용한도를 넘어버림
ERROR: [query] Data too large, data for [mergeOnHandler: 1]
would be [1288635950/1.2gb],
which is larger than the limit of [1288490188/1.1gb]
# logstash.conf 파일에 아래와 같은 페이징 처리를 함
jdbc_paging_enabled => true
jdbc_page_size => 10000
Logstash가 내부적으로 페이징 쿼리를 자동 생성하여
한 번에 너무 많은 데이터를 가져오지 않도록 하여 처리
해당 방법은 데이터 양이 많을수록 OFFSET이 커져서 쿼리 성능이 급격히 나빠질 수 있음
이번 indexing 작업은 인스턴스 성격임으로 해당 방식으로 해결