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

MongoDB Server 실행 시간 제한

이 가이드 에서는 클라이언트 사이드 작업 시간 제한(CSOT) 이라고도 하는 고 (Go) 운전자 의 단일 시간 제한 설정에 대해 학습 수 있습니다.

고 (Go) 운전자 사용하여 서버 작업을 수행할 때 서버 작업을 완료할 수 있는 시간을 제한할 수도 있습니다. 제한 시간은 서버 선택, 연결 체크아웃 및 서버 측 실행을 포함하여 작업을 완료하는 데 필요한 모든 단계에 적용됩니다. 제한 시간이 만료되면 고 (Go) 운전자 제한 시간 예외를 발생시킵니다.

참고

실험적 기능

CSOT 기능 실험적 기능이며 향후 드라이버 릴리스 에서 변경될 수 있습니다.

MongoDB deployment 에 연결할 때 제한 시간을 지정하려면 timeoutMS 연결 옵션을 제한 시간 길이(밀리초)로 설정하다 . 다음과 같은 방법으로 timeoutMS 옵션을 설정하다 수 있습니다.

  • Client 인스턴스 에 대한 옵션을 지정할 때 SetTimeout() 메서드 호출

  • 연결 string에서 timeoutMS 매개변수 설정

다음 코드 예제에서는 클라이언트 수준 시간 제한을 200 밀리초로 설정하다 . Client 또는 Connection String 탭 선택하여 해당 코드를 확인합니다.

opts := options.Client().SetTimeout(200 * time.Millisecond)client, err := mongo.Connect(opts)

참고

시간 초과 사양에 따른 재시도

Client 또는 작업 수준 컨텍스트에서 시간 초과를 설정하다 서버 재시도 가능 오류를 반환하는 경우 운전자 시간 초과가 만료되기 전에 가능한 한 많은 횟수만큼 작업을 재시도합니다.

시간 초과가 만료되면 운전자 시간 초과 오류를 반환합니다. 재시도 가능 읽기 및 재시도 가능 쓰기에 대한자세한 내용은 서버 매뉴얼을 참조하세요.

다음 표에서는 timeoutMS에 허용되는 값에 해당하는 시간 초과 동작을 설명합니다.

값
행동

양의 정수

작업 완료에 사용할 시간 제한을 설정합니다.

0

작업이 시간 초과되지 않도록 지정합니다.

null 또는 unset

타임아웃 동작을 다음 설정으로 연기합니다.

이 설정은 더 이상 사용되지 않습니다. 그리고 timeoutMS을 설정하는 경우 무시됩니다.

timeoutMS 옵션을 지정하면 운전자 각 서버 작업에 지정된 시간 제한을 자동으로 적용합니다.

작업의 컨텍스트에서 특정 작업에 대해 다른 시간 제한을 설정하다 하지 않으면 기본값 으로 애플리케이션 의 모든 작업은 Client 의 Timeout 옵션을 상속합니다.

작업에 전달된 컨텍스트에 시간 초과를 설정하다 운전자 해당 값을 작업에 사용합니다. 컨텍스트 시간 제한을 지정하지 않으면 컨텍스트 작업은 Client 인스턴스 에서 시간 제한을 파생합니다.

다음 표에서는 각 수준에서 시간 초과 값이 상속되는 방식에 대해 설명합니다.

수준
상속 설명

작업

가장 높은 우선 순위를 가지며 다른 수준에서 설정하다 시간 초과 옵션을 재정의합니다.

트랜잭션

클라이언트 수준에서 설정하다 한 시간 초과 값보다 우선합니다.

고객

컨텍스트 시간 초과를 달리 지정하지 않는 해당 클라이언트 내의 모든 데이터베이스, 컬렉션, 세션, 트랜잭션 및 작업에 적용됩니다.

재정의 및 특정 옵션에 대한 자세한 내용은 다음 재정의 섹션을 참조하세요.

고 (Go) 운전자 데이터베이스 작업의 동작과 성능을 제어하기 위해 다양한 수준의 구성을 지원합니다.

보다 구체적인 수준에서 timeoutMS 옵션을 지정하여 클라이언트 수준 구성을 재정의할 수 있습니다. 이전 섹션의 표에서는 시간 초과 설정을 지정할 수 있는 수준에 대해 설명합니다. 이를 통해 개별 작업의 요구 사항에 따라 시간 초과를 사용자 지정할 수 있습니다.

다음 예시 클라이언트 수준의 시간 제한보다 우선 순위 하는 컨텍스트에서 작업 수준의 시간 제한을 설정하다 방법을 보여줍니다.

opts = options.Client().SetTimeout(200 * time.Millisecond)client, err = mongo.Connect(opts)if err != nil { log.Fatal(err)} coll := client.Database("db").Collection("people") ctx, cancel := context.WithTimeout(context.TODO(), 300*time.Millisecond)defer cancel() _, err = coll.InsertOne(ctx, bson.D{{"name", "Agnes Georgiou"}})

WithTransaction() 메서드를 사용하여 트랜잭션 수행할 때 컨텍스트 내에서 시간 초과를 설정하여 트랜잭션 작업에 시간 초과를 적용 할 수 있습니다.

다음 코드는 트랜잭션 수행하기 위해 WithTransaction() 메서드를 호출할 때 컨텍스트 시간 제한을 설정하다 방법을 보여줍니다.

txnContext, cancel := context.WithTimeout(context.TODO(), 300*time.Millisecond)defer cancel() result, err := session.WithTransaction(txnContext, func(ctx context.Context) (string, error) { // Perform transaction operations})

컨텍스트 시간 제한을 지정하지 않으면 운전자 상위 Client에 설정하다 시간 제한 값을 상속합니다.

컨텍스트 시간 초과를 다음 세션 메서드에 전달할 수도 있습니다.

  • AbortTransaction()

  • CommitTransaction()

  • EndSession()

트랜잭션에 대해 자세히 학습 트랜잭션 가이드 참조하세요.

커서는 CSOT 기능 사용할 때 구성 가능한 시간 초과 설정을 제공합니다. 시간 초과 사양이 있는 컨텍스트를 Cursor 메서드에 전달하여 커서 시간 초과를 조정할 수 있습니다.

커서를 생성하는 작업의 경우 시간 초과 설정은 커서 의 수명을 제한하거나 원래 작업과 모든 후속 호출에 별도로 적용할 수 있습니다.

예시 를 들어 Cursor.Next() 메서드에 컨텍스트 시간 제한을 전달하면 결과 문서 가져오는 각 조치 에 시간 제한이 적용됩니다. 컨텍스트 시간 제한을 Cursor.All() 메서드에 전달하면 제한 시간이 커서 의 전체 수명에 적용됩니다.

커서에 대해 자세히 학습하려면 커서에서 데이터 액세스 가이드를 참조하세요.

고 (Go) 운전자 에서 시간 초과를 사용하는 방법에 대해 자세히 학습 다음 API 설명서를 참조하세요.