Error bulk 429 Too many requests

standard2hsw·2023년 1월 22일
0

elasticsearch

목록 보기
1/1
post-thumbnail

HTTP 429 Error

Elasticsearch에서 bulk를 사용하여 많은 양의 데이터를 Elasticsearch에 저장할 경우 분명 HTTP 요청은 정상적으로 끝이 났는데 데이터가 저장이 안 되는 경우가 발생할 수 있습니다. 여기서 중요한 것은 Elasticsearch로 보낸 HTTP의 Response는 200이라는 정상적인 값을 리턴을 하기 때문에 문제를 찾기가 어려운데요. 이럴 때는 Response의 state code를 보는 것이 아니라 Response의 body의 내용을 볼 필요가 있습니다. 그러면 429라는 에러를 볼 수 있는데요. HTTP 429 Error는 Too many requests를 뜻 하는 에러입니다. 이럴 때 문제를 해결할 수 있는 방법이 2가지가 있습니다. 첫번째 방법은 당연하게도 bulk의 개수를 줄이는 것입니다. 그러나 우리는 이러한 단순한 방법을 원하지 않았을 것입니다. 그래서 두번째 방법으로는 thread_pool의 wrtie queue size를 늘리는 방식입니다. 이런 방식을 통하여 많은 양의 bulk를 처리하는 방식에 대하여 정리하였습니다.

설정 변경하기

ES디렉토리/config/elasticsearch.yml파일에 다음과 같은 설정 값을 추가합니다.

thread_pool.write.queue_size: 2000
thread_pool.write.size: 16

위와 같이 설정을 변경하였다면 Elasticsearch를 재시작합니다.

만약 다음과 같은 메시지가 발생한 다면
thread_pool.write.size의 값을 13보다 작은 값으로 설정하세요

java.lang.IllegalArgumentException: Failed to parse value [16] for setting [thread_pool.write.size] must be <= 13

설정 값 리스트

OptionDesribe
thread_pool.write.sizewrite를 수행하는 스레드 풀의 스레드 수
thread_pool.write.queue_sizewrite를 할 때 사용되는 스레드 풀의 큐 크기
thread_pool.search.sizesearch를 수행하는 스레드 풀의 스레드 수
thread_pool.search.queue_sizesearch를 할 때 사용되는 스레드 풀의 큐 크기
profile
그냥 기억하기 싫어서 기록하는 블로그

0개의 댓글