Docs Menu
Docs Home
/ / /
Go 드라이버
/ /

연결 옵션

이 페이지의 내용

  • 개요
  • 옵션
  • 단일 타임아웃 설정
  • 시간 초과 예시

이 가이드 몇 가지 일반적인 MongoDB 연결 및 인증 옵션에 대해 설명합니다. 연결 옵션을 연결 URI의 매개 변수로 전달하여 클라이언트 의 동작을 지정할 수 있습니다.

다음 표에서는 연결 URI에서 설정하다 수 있는 연결 옵션에 대해 설명합니다. 각 항목은 옵션 이름, 값 유형, 기본값 및 옵션에 대한 설명을 제공합니다.

옵션 이름
유형
기본값
설명

timeoutMS

integer

null

Client에서 단일 작업을 실행할 때 제한 시간 오류가 반환되기 전에 걸릴 수 있는 시간을 밀리초 단위로 지정합니다. 작업 컨텍스트에 최종 기한이 없는 경우에만 작업에서 이 설정을 따릅니다.

connectTimeoutMS

integer

30000

시간이 초과되기 전에 연결을 시도하는 시간(밀리초)을 지정합니다.

maxPoolSize

integer

100

특정 시간에 연결 풀이 가질 수 있는 최대 연결 수를 지정합니다.

복제본 세트

문자열

null

클러스터의 복제본 세트 이름을 지정합니다. 복제본 세트의 모든 노드는 동일한 복제본 세트 이름을 가져야 하며, 그렇지 않으면 클라이언트가 해당 노드를 세트의 일부로 간주하지 않습니다.

maxIdleTimeMS

integer

0

연결이 제거되고 닫히기 전에 연결 풀에서 유휴 상태로 남아 있을 수 있는 최대 시간을 지정합니다. 기본값은 0으로, 연결이 무기한 사용되지 않은 상태로 유지될 수 있습니다.

minPoolSize

integer

0

드라이버가 단일 연결 풀에서 유지 관리하는 최소 연결 수를 지정합니다.

serverSelectionTimeoutMS

integer

30000

작업을 실행하는 데 사용 가능하고 적합한 서버를 찾기 위해 기다리는 시간(밀리초)을 지정합니다.

heartbeatFrequencyMS

integer

10000

정기적인 백그라운드 서버 확인 사이에 대기할 시간(밀리초)을 지정합니다.

TLS

부울

false

인스턴스와의 TLS(전송 계층 보안) 연결을 설정할지 여부를 지정합니다. 연결 문자열에서 DNS 시드 목록(SRV) 을 사용할 때 이 값은 자동으로 true로 설정됩니다. 값을 false로 설정하여 이 동작을 재정의할 수 있습니다.

w

문자열 또는 정수

null

쓰기 고려 (write concern) 지정합니다. 값에 대해 자세히 학습 쓰기 고려 옵션에 대한 서버 설명서를 참조하세요.

directConnection

부울

false

연결 URI에 지정된 호스트에 모든 작업을 강제로 디스패치할지 여부를 지정합니다.

연결 옵션의 전체 목록은 ClientOptions API 설명서를 참조하세요.

Client 인스턴스 에 단일 Timeout 옵션을 설정하다 단일 작업을 실행하는 데 걸리는 최대 시간을 지정할 수 있습니다.

Client 인스턴스 에 대한 옵션을 지정할 때 SetTimeout() 메서드를 호출하거나 연결 URI에 timeoutMS 옵션을 지정하여 클라이언트 수준 시간 제한을 설정합니다. 기본값 으로 특정 작업에 대해 다른 시간 제한을 설정하다 하지 않으면 애플리케이션 의 다른 곳에 있는 모든 Database, Collection, Session, ChangeStreamBucket 인스턴스는 Client 에서 Timeout 옵션을 상속합니다. 작업의 컨텍스트에서 확인할 수 있습니다.

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

참고

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

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

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

이 섹션에서는 애플리케이션 에서 시간 제한을 설정하다 다양한 방법을 보여주는 예제를 제공합니다.

다음 코드는 SetTimeout() 메서드를 사용하여 Client 에서 Timeout 옵션을 설정하다 방법을 보여줍니다.

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

다음 예시 timeoutMS URI 옵션을 사용하여 단일 시간 제한을 설정하다 방법을 보여 줍니다. 그런 다음 코드는 제한 시간을 상속하는 삽입 작업을 실행합니다.

uri := "mongodb://user:pass@sample.host:27017/?timeoutMS=5000"
client, err := mongo.Connect(options.Client().ApplyURI(uri))
...
coll.InsertOne(context.Background(), doc)

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

ctx, cancel := context.WithTimeout(context.TODO(), time.Second)
defer cancel()
res, err := coll.InsertOne(ctx, bson.D{{"x", 2}})

돌아가기

연결 가이드