AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

로드 셰딩으로 인한 과부하 오류 처리

클러스터가 리소스가 처리할 수 있는 작업보다 더 많은 입력 작업을 받을 때 과부가 발생하며, 이는 클러스터에 전체 또는 거의 전체 장애를 유발할 수 있습니다. Load Shedding은 Intelligent 워크로드 관리 (IWM)의 기능으로, Atlas가 장기간 과부하가 발생하는 동안 작업을 거부할 수 있도록 합니다. 클러스터에 대한 부하 제거를 구성하려면 지능형 워크로드 관리 구성을 참조하세요.

Load Shedding이 작업을 거부하면 애플리케이션에서 해당 작업에 대해 SystemOverloadedError 레이블이 지정된 새 오류가 발생할 수 있습니다. 이 오류는 클러스터에 과부하가 걸려 작업을 삭제하고 있음을 나타냅니다.

배압 인식 클라이언트 라이브러리를 사용하는 경우, 클라이언트 라이브러리는 이러한 오류를 인식하고 재시도해도 안전한 오류를 재시도합니다. 애플리케이션은 여전히 재시도 기간과 부하 분산 시점을 제어합니다. 자세한 내용은 과부하 오류 처리를 참조하세요.

SystemOverloadedError 레이블만으로는 해당 작업을 안전하게 다시 시도할 수 있다는 것을 의미하지 않습니다. 과부하 오류가 재시도 가능한지 확인하려면 다음 레이블을 확인하세요.

  • RetryableError - 작업이 실행되지 않았으며 다시 시도하는 것이 안전합니다.

  • NoWritesPerformed - 서버가 쓰기 (write) 작업을 수행하기 전에 해당 작업을 거부했습니다.

다음 예시는 Load Shedding이 작업을 거부할 때 Atlas가 반환하는 과부하 오류를 보여줍니다.

{ "ok": 0.0, "errmsg": "Request rejected: ingress operation rate limit exceeded", "code": 463, "codeName": "IngressOperationRateLimitExceeded", "errorLabels": ["SystemOverloadedError", "RetryableError", "NoWritesPerformed"]}

중요

과부하 오류에 RetryableError 레이블이 포함되어 있지 않은 경우, 작업이 멱등인지 확인하고 과부하를 가중시키지 않도록 재시도하기 전에 잠시 기다리십시오. 재시도 로직에 지수 백오프와 지터를 사용하세요.

역압 인식 드라이버 및 기타 클라이언트 라이브러리는 SystemOverloadedError 레이블이 있는 과부하 오류를 자동으로 인식하고 과부하 신호로 처리합니다. 오류에 RetryableError 레이블을 포함하여 재시도를 유도하는 레이블이 있는 경우 역압 인식 클라이언트 라이브러리는 지수 백오프 및 지터를 사용하여 작업을 자동으로 재시도합니다.

다음 표에는 역압을 인식하는 가장 오래된 클라이언트 라이브러리 버전이 나열되어 있습니다.

클라이언트 라이브러리
가장 이른 배압 인식 버전

C 드라이버

2.5

C++ 드라이버

4.6

.NET/C# 드라이버

3.11

Go 드라이버

2.9

Java 동기화 드라이버

5.12

Java Reactive Streams 드라이버

5.12

코틀린 코루틴 드라이버

5.12

Kotlin Sync 드라이버

5.12

Node.js 드라이버

7.6

PHP 라이브러리

2.5; mongodb PHP 확장(PHPC) 2.5.0+ 필요

PyMongo

4.18

Scala드라이버

5.12

Ruby

2.26

Rust

3.9

배압 인식 클라이언트 라이브러리를 사용하는 경우에도 애플리케이션의 과부하 오류를 처리하세요. 배압 인식 클라이언트 라이브러리는 재시도 가능으로 표시된 작업을 재시도하지만, 애플리케이션은 재시도를 얼마나 오래 유지할지, 클러스터가 계속 거부하는 작업을 포기하여 언제 부하를 줄일지 결정합니다. 배압 인식 클라이언트 라이브러리를 사용하지 않는 경우 오류 감지 및 재시도 로직도 직접 구현하세요.

재시도 가능으로 표시된 과부하 오류를 처리하기 위해 지수 백오프를 사용하여 오류 감지 및 재시도 로직을 구현하는 방법에 대한 예시는 다음 절차를 참조하세요.

인터페이스

다음 절차에 따라 과부하 오류를 감지하고 지수 백오프로 재시도하는 유틸리티를 구현 .

과부하 오류로 인해 실패한 작업을 재시도할 때는 과부하를 가중시키지 않고 성공적인 재시도 가능성을 높이기 위해 다음 지침을 따르세요.

  • 재시도 횟수 제한: 작업당 최대 2회 재시도를 사용하세요. 제한을 높이면 오류율은 낮아지지만 과부하 시 서버 부하가 증가하고, 재시도 횟수를 줄이면 서버 부하는 줄어들지만 오류율은 높아질 수 있습니다.

  • 선택적으로 적용: 지연 시간에 민감하거나 비즈니스에 중요한 작업에만 이 패턴 사용하세요. 배경 워크로드의 경우 오류를 로그 하고 더 긴 지연으로 더 높은 수준에서 다시 시도합니다.