Logstash JDBC Paging

choi·2025년 4월 9일

업무 관련 이슈

목록 보기
4/5

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]

해결: JDBC 쿼리를 페이징 처리

# logstash.conf 파일에 아래와 같은 페이징 처리를 함
  jdbc_paging_enabled => true
  jdbc_page_size => 10000

정리

Logstash가 내부적으로 페이징 쿼리를 자동 생성하여 
한 번에 너무 많은 데이터를 가져오지 않도록 하여 처리

해당 방법은 데이터 양이 많을수록 OFFSET이 커져서 쿼리 성능이 급격히 나빠질 수 있음

이번 indexing 작업은 인스턴스 성격임으로 해당 방식으로 해결
profile
늦게나마 정신을 차리려고 하는 개발 뭐시기하는 사람

0개의 댓글