DBAtlas · 데이터베이스 운영 아틀라스

circuit_breaking_exception: CircuitBreakingException[[parent] Data too large, data for [<...>] would be [...], which is larger than the limit of [...]]

Elasticsearch

의미

요청이 메모리(heap) circuit breaker 한도를 초과할 것이어서 거부되었다. Elasticsearch는 노드가 OutOfMemoryError로 크래시되지 않도록 요청을 사전에 중단한다. [parent] breaker는 전체 메모리 사용량을, [fielddata] breaker는 text 필드의 fielddata 메모리를 보호한다.

원인

부족한 JVM heap, 매우 크거나 복잡한 aggregation, 큰 결과 세트, 큰 bulk 요청, text 필드에 로드된 fielddata, 또는 heap을 채우는 많은 무거운 동시 쿼리. 대개 heap 압박의 증상이다.

해결 방법

쿼리를 줄인다: aggregation 크기, bulk 배치 크기, 반환 필드를 줄인다. text 필드의 fielddata 대신 keyword 하위 필드(.keyword)로 집계한다. JVM heap을 늘린다(서버 RAM의 약 50%, 최대 약 31GB). heap 압박을 모니터링한다: GET _cat/nodes?v&h=name,heap.percent. breaker 한도를 일시적으로 올리기보다 근본 원인(메모리/쿼리)을 해결한다. GET _nodes/stats/breaker로 어떤 breaker가 동작했는지 확인한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목