“이 게시글은 AWS Big Data Blog에 작성된 “Improved resiliency with backpressure and admission control for Amazon OpenSearch Service” 블로그를 번역및 편집 하였습니다.” Amazon OpenSearch Service는 AWS가 관리하는 관리형 서비스로 클라우드 환경에서 OpenSearch 클러스터를 대규모로 보안, 배포 및 운영하는 것을 간단하게 만들어주는 관리형 서비스입니다. 2022년 OpenSearch는 내부적으로 샤드 인덱싱 백프레셔와 admission control이 적용 되었고, 이 기능을 […] ||
“이 게시글은 AWS Big Data Blog에 작성된 “Improved resiliency with backpressure and admission control for Amazon OpenSearch Service” 블로그를 번역및 편집 하였습니다.”
Amazon OpenSearch Service는 AWS가 관리하는 관리형 서비스로 클라우드 환경에서 OpenSearch 클러스터를 대규모로 보안, 배포 및 운영하는 것을 간단하게 만들어주는 관리형 서비스입니다. 2022년 OpenSearch는 내부적으로 샤드 인덱싱 백프레셔와 admission control이 적용 되었고, 이 기능을 통하여 클러스터 리소스와 수신 트래픽을 모니터링하여 메모리 부족과 같은 안정성 위험을 야기하고 메모리 경합, CPU 포화, GC 오버헤드 등으로 인해 클러스터 성능에 영향을 미칠 수 있는 요청을 선택적으로 거부할 수 있도록 개선되었습니다.
2023년 클러스터의 복원력을 더욱 향상시키는 Search Backpressure와 CPU 기반 Admission Control이 Amazon OpenSearch Service에 도입되었고, 이러한 개선 사항은 OpenSearch 버전 1.3 이상의 모든 버전에 적용되어 있으며 기본적으로 활성화 되어 있습니다.
Search Backpressure
백프레셔는 시스템이 작업으로 인해 과부하되는 것을 방지합니다. 트래픽 속도를 제어하거나 과도한 부하를 제거하여 크래시와 데이터 손실을 방지하고, 성능을 개선하며, 시스템의 전체적인 장애를 피합니다.
Search Backpressure는 노드가 부하를 받고 있을 때 진행 중인 리소스 집약적인 검색 요청을 식별하고 취소하는 메커니즘입니다. 이는 비정상적으로 높은 리소스 사용량을 보이는 검색 워크로드(복잡한 쿼리, 느린 쿼리, 많은 히트 수, 또는 무거운 집계 등)에 효과적이며, 그렇지 않으면 노드 크래시를 유발하고 클러스터의 상태에 영향을 미칠 수 있습니다.
Search Backpressure는 각 작업의 리소스 사용량을 모니터링하기 위한 사용하기 쉬운 API를 제공하는 작업 리소스 추적 프레임워크 위에 구축되었습니다. Search Backpressure는 주기적으로 노드의 리소스 사용량을 측정하고 CPU 시간, 힙 할당, 경과 시간과 같은 요소를 기반으로 진행 중인 각 검색 작업에 취소 점수를 할당하는 백그라운드 스레드를 사용합니다. 더 높은 취소 점수는 더 리소스 집약적인 검색 요청에 해당합니다. 검색 요청은 노드를 빠르게 복구하기 위해 취소 점수의 내림차순으로 취소되지만, 불필요한 작업을 피하기 위해 취소 횟수는 속도 제한됩니다.
다음 다이어그램은 Search Backpressure 워크플로우를 보여줍니다.
검색 요청은 취소 시 HTTP 429 “Too Many Requests” 상태 코드를 반환합니다. 일부 샤드만 실패하고 부분 결과가 허용되는 경우 OpenSearch는 부분 결과를 반환합니다. 다음 코드를 참조하세요.
{
"error": {
"root_cause": [
{
"type": "task_cancelled_exception",
"reason": "cancelled task with reason: heap usage exceeded