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

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

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

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

If you use a backpressure-aware client library, the client library recognizes these errors and retries the ones that are safe to retry. Your application still controls how long to keep retrying and when to shed load. To learn more, see Handle Overload Errors.

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

Handle overload errors in your application even if you use a backpressure-aware client library. Backpressure-aware client libraries retry operations labeled as retryable, but your application decides how long to keep retrying and when to shed load by abandoning operations that the cluster continues to reject. If you are not using a backpressure-aware client library, also implement the error detection and retry logic yourself.

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

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

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

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

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