100 lines
12 KiB
Markdown
100 lines
12 KiB
Markdown
---
|
|
title: "official-doc / MongoDB — Connection String Options (timeout / pool / tls / retry)"
|
|
source_type: official-doc
|
|
url: https://www.mongodb.com/docs/manual/reference/connection-string-options/
|
|
archive_url:
|
|
status: raw
|
|
confidence: high
|
|
tags: [official-doc, ca-skeleton, persistence, mongodb, connection-pool]
|
|
related_projects: [ca-skeleton]
|
|
related_branches: [feature-mongo-runtime-baseline-contract]
|
|
created: 2026-07-28
|
|
last_reviewed: 2026-07-28
|
|
---
|
|
|
|
# official-doc / MongoDB — Connection String Options (timeout / pool / tls / retry)
|
|
|
|
> Layer: `raw/official-docs/` — MongoDB 공식 Manual reference (`connection-string-options`) 원문 발췌.
|
|
> `feature-mongo-runtime-baseline-contract` 의 "Mongo 연결의 timeout·pool·TLS 파라미터를 드라이버 기본값에 맡기지 않고 명시하고 env registry 로 노출한다" 결정 근거.
|
|
|
|
## Parent / 활용 branch (필수)
|
|
|
|
| Branch | 이 자료가 정당화하는 결정 |
|
|
|---|---|
|
|
| [[raw/branch-notes/feature-mongo-runtime-baseline-contract]] | Mongo 연결의 timeout(`serverSelectionTimeoutMS`/`connectTimeoutMS`/`socketTimeoutMS`)·pool(`maxPoolSize`/`minPoolSize`/`maxIdleTimeMS`)·TLS(`tls`)·retry(`retryWrites`/`retryReads`) 파라미터를 드라이버 기본값에 맡기지 않고 명시하고 env registry 로 노출한다 |
|
|
|
|
## 컨텍스트
|
|
|
|
ca-skeleton 은 MongoDB 를 optional adapter(문서 저장소 축)로 채택할 수 있다. 본 branch 는 연결 문자열의 timeout·pool·TLS·retry 파라미터를 드라이버 기본값에 맡길지, 명시적으로 설정하고 env registry 로 노출할지를 결정해야 한다. 이 판단에는 각 옵션이 실제로 무엇을 의미하는지, 그리고 드라이버/서버가 어떤 값을 기본값으로 쓰는지에 대한 공식 정의가 필요하다 — "기본값에 의존하지 않는다"는 결정을 정당화하려면 그 기본값이 무엇인지, 왜 운영 환경에 부적합할 수 있는지 먼저 알아야 한다.
|
|
|
|
## 출처 / Source
|
|
|
|
- 원본 URL: https://www.mongodb.com/docs/manual/reference/connection-string-options/
|
|
- 아카이브 URL: (미수집)
|
|
- 저자 / 조직: MongoDB, Inc.
|
|
- 발행일: MongoDB Manual (현재 버전)
|
|
- 마지막 확인일: 2026-07-28
|
|
|
|
## 핵심 인용 / Key quotes (verbatim)
|
|
|
|
> [§`serverSelectionTimeoutMS`] "Specifies how long (in milliseconds) to block for server selection before throwing an exception. _Default_: 30,000 milliseconds."
|
|
|
|
> [§`connectTimeoutMS`] "The time in milliseconds to attempt a connection before timing out. The default is 10,000 milliseconds, but specific drivers might have a different default."
|
|
|
|
> [§`socketTimeoutMS`] "The time in milliseconds to attempt a send or receive on a socket before the attempt times out. The default is no timeout, though different drivers might vary."
|
|
|
|
> [§`maxPoolSize`] "The maximum number of connections in the connection pool. The default value is `100`."
|
|
|
|
> [§`minPoolSize`] "The minimum number of connections in the connection pool. The default value is `0`."
|
|
|
|
> [§`maxIdleTimeMS`] "The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed." — "This option is not supported by all drivers."
|
|
|
|
> [§`tls`] "true`: Initiates the connection with TLS/SSL. Default for [SRV Connection Format.]" / "false`: Initiates the connection without TLS/SSL. Default for [Standard Connection String Format.]"
|
|
|
|
> [§`retryWrites` / `retryReads`] "Official MongoDB drivers default to `true`." (두 옵션 모두 동일 문장으로 기본값 명시)
|
|
|
|
## Claims Extracted / 추출된 주장
|
|
|
|
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|
|
|---|---|---|---|---|---|
|
|
| MONGO-CONNSTR-C1 | `serverSelectionTimeoutMS` 는 서버 선택을 위해 얼마나 오래 대기할지(밀리초)를 지정하며, 초과 시 예외를 던진다. 기본값은 30,000ms 이다 | [§`serverSelectionTimeoutMS`] "Specifies how long (in milliseconds) to block for server selection before throwing an exception. _Default_: 30,000 milliseconds." | `official-vendor-doc` | 공식 MongoDB 드라이버가 이 URI 옵션을 지원하는 배포 전반 | 특정 드라이버(예: Spring Data MongoDB 가 사용하는 Java driver) 가 이 기본값을 그대로 상속하는지는 개별 드라이버 문서 확인 필요 |
|
|
| MONGO-CONNSTR-C2 | `connectTimeoutMS` 는 연결 시도를 timeout 처리하기 전까지 걸리는 시간(밀리초)이며, 기본값은 10,000ms 이지만 드라이버마다 다를 수 있다 | [§`connectTimeoutMS`] "The time in milliseconds to attempt a connection before timing out. The default is 10,000 milliseconds, but specific drivers might have a different default." | `official-vendor-doc` | 연결 수립 단계의 timeout 일반 의미 | "특정 드라이버가 다른 기본값을 가질 수 있다"는 문장 자체가 그 드라이버가 무엇인지는 밝히지 않음 — 실제 채택 드라이버의 기본값은 별도 확인 필요 |
|
|
| MONGO-CONNSTR-C3 | `socketTimeoutMS` 는 소켓에서 송수신을 시도하는 시간(밀리초)이며, 기본값은 "no timeout"(무제한)이다 | [§`socketTimeoutMS`] "The time in milliseconds to attempt a send or receive on a socket before the attempt times out. The default is no timeout, though different drivers might vary." | `official-vendor-doc` | 연결 수립 이후 개별 read/write 소켓 작업의 timeout 일반 의미 | 드라이버가 실제로 이 "no timeout" 기본값을 그대로 두는지, 아니면 자체 기본값으로 override 하는지는 드라이버별 확인 필요 — 본 인용은 "different drivers might vary" 라고만 명시 |
|
|
| MONGO-CONNSTR-C4 | `maxPoolSize` 는 connection pool 의 최대 연결 수를 의미하며, 기본값은 `100` 이다 | [§`maxPoolSize`] "The maximum number of connections in the connection pool. The default value is `100`." | `official-vendor-doc` | connection pool 크기 설정 URI 옵션을 지원하는 드라이버 전반 | `100` 이 모든 배포·워크로드에 적정한 값이라는 것은 이 문장이 증명하지 않음 — 값 산정(sizing) 기준은 별도 자료 필요 |
|
|
| MONGO-CONNSTR-C5 | `minPoolSize` 는 connection pool 의 최소 연결 수를 의미하며, 기본값은 `0` 이다 | [§`minPoolSize`] "The minimum number of connections in the connection pool. The default value is `0`." | `official-vendor-doc` | connection pool 최소 유지 연결 수 개념 | 모든 드라이버가 이 옵션을 지원하는 것은 아님(자료 원문에 별도 명시) — 채택 드라이버의 지원 여부 확인 필요 |
|
|
| MONGO-CONNSTR-C6 | `maxIdleTimeMS` 는 연결이 idle 상태로 pool 에 남아있다가 제거·종료되기까지의 최대 시간(밀리초)을 의미한다. 원문에는 이 옵션의 **명시적 숫자 기본값이 기재되어 있지 않다**(재확인 fetch로 "No default value is explicitly stated" 확인) | [§`maxIdleTimeMS`] "The maximum number of milliseconds that a connection can remain idle in the pool before being removed and closed." | `official-vendor-doc` | idle connection 회수 개념 자체 | 이 옵션의 실제 기본 동작(예: 무제한 유지)이 무엇인지는 이 인용만으로 증명되지 않음 — "모든 드라이버가 지원하는 것은 아니다"라고만 명시되어 있어, 채택 드라이버 문서에서 실제 기본 동작 확인 필요 |
|
|
| MONGO-CONNSTR-C7 | `tls`(=`ssl`) 옵션의 기본값은 연결 문자열 형식에 따라 다르다 — SRV 형식(`mongodb+srv://`)에서는 `true` 가 기본, Standard 형식(`mongodb://`)에서는 `false` 가 기본이다 | [§`tls`] "true`: Initiates the connection with TLS/SSL. Default for [SRV Connection Format.]" / "false`: Initiates the connection without TLS/SSL. Default for [Standard Connection String Format.]" | `official-vendor-doc` | `mongodb://` 또는 `mongodb+srv://` 형식의 연결 문자열을 사용하는 모든 공식 드라이버 | TLS 미사용(Standard 형식 + `tls` 미지정) 상태에서 실제 운영 환경에 어떤 위험이 있는지는 이 문서가 규정하지 않음 — 위험 판단은 별도 보안 근거 필요 |
|
|
| MONGO-CONNSTR-C8 | `retryWrites`/`retryReads` 는 공식(official) MongoDB 드라이버에서 기본값이 `true` 이다(재시도 가능 write/read 가 기본 활성화) | [§`retryWrites`/`retryReads`] "Official MongoDB drivers default to `true`." | `official-vendor-doc` | "공식" MongoDB 드라이버(자체 명시)를 사용하는 연결 | 서드파티/커스텀 드라이버 또는 `mongosh` 는 이 기본값 범위 밖 — 원문에 "`mongosh` does not support retryable reads" 라고 별도 명시(이번 raw 에는 별도 claim 미등록, 참고용으로만 기재) |
|
|
|
|
## Usage Boundaries / 적용 경계
|
|
|
|
- **이 자료가 직접 증명하는 것**:
|
|
- `MONGO-CONNSTR-C1`: `serverSelectionTimeoutMS` 기본값 30,000ms
|
|
- `MONGO-CONNSTR-C2`: `connectTimeoutMS` 기본값 10,000ms(드라이버별 상이 가능)
|
|
- `MONGO-CONNSTR-C3`: `socketTimeoutMS` 기본값 "no timeout"(드라이버별 상이 가능)
|
|
- `MONGO-CONNSTR-C4`~`C5`: `maxPoolSize` 기본값 100, `minPoolSize` 기본값 0
|
|
- `MONGO-CONNSTR-C6`: `maxIdleTimeMS` 의미는 정의되지만 **명시적 숫자 기본값은 이 문서에 없음**
|
|
- `MONGO-CONNSTR-C7`: `tls` 기본값이 연결 문자열 형식(SRV vs Standard)에 따라 갈린다는 사실
|
|
- `MONGO-CONNSTR-C8`: 공식 드라이버 기준 `retryWrites`/`retryReads` 기본값 `true`
|
|
- **이 자료가 증명하지 않는 것**:
|
|
- ca-skeleton 이 실제로 채택할 특정 드라이버(예: Spring Data MongoDB 가 감싸는 MongoDB Java Driver)가 이 문서의 기본값을 정확히 그대로 상속하는지 — 원문 곳곳에 "specific drivers might have a different default" / "different drivers might vary" 라고 반복 명시되어 있어, 채택 드라이버 자체 문서 교차 확인이 필요함
|
|
- `maxPoolSize: 100`, `serverSelectionTimeoutMS: 30000` 등 기본값이 ca-skeleton 의 실제 트래픽·SLA 에 적정한지 — 이 문서는 정의와 기본값만 제공, sizing 판단 근거 아님
|
|
- `w`/`j`/`wtimeout` 등 write concern 관련 옵션 — 별도 자료 [[raw/official-docs/write-concern-mongodb-official]] 로 이미 수집됨, 본 자료 범위 밖
|
|
- read concern / change streams / replica-set 트랜잭션 요건 — 본 branch 완료 조건에 포함되나 이 자료는 다루지 않음(잔여 수집 대상)
|
|
- **ca-skeleton 프로젝트에 적용하려면 추가 확인이 필요한 것**:
|
|
- Spring Data MongoDB(또는 채택할 드라이버)가 이 URI 옵션들을 어떤 설정 property(예: `spring.data.mongodb.uri` vs 개별 property)로 노출하는지 — 별도 official-doc 필요
|
|
- env registry 에 노출할 실제 값(예: `serverSelectionTimeoutMS` 를 30,000 그대로 둘지 낮출지)은 이 자료가 아니라 branch 의 §구현 가이드에서 운영 요구사항 기반으로 결정 — 본 자료는 "기본값이 무엇이고 왜 명시가 필요한지"까지만 증명
|
|
|
|
## 메모 / Notes
|
|
|
|
- 최초 WebFetch 결과는 소형 모델이 각 옵션을 새 markdown 표(재구성)로 요약해 반환했다 — paraphrase 위험이 있어 폐기하고, "Do NOT summarize or reformat" 지시를 명시한 재요청으로 verbatim 인용을 다시 받았다. `maxIdleTimeMS` 의 명시적 기본값 유무는 3차 재요청으로 별도 확인("No default value is explicitly stated")했다.
|
|
- `tls`/`ssl` 인용은 원문의 markdown 링크 문법(`[SRV Connection Format.](url)`)이 포함되어 있어, self-grep 매칭을 위해 링크 텍스트까지만(`[SRV Connection Format.]`) 부분 문자열로 인용했다 — 원문 자체의 하이퍼링크 마크업이며 내용 왜곡 아님.
|
|
- 잔여 수집 대상(이번 raw 범위 밖): read concern 공식 정의, change streams resume token 공식 정의, replica-set 트랜잭션 요건 공식 문서.
|
|
|
|
## Related / 관련
|
|
|
|
- 같은 주제 다른 official-doc: [[raw/official-docs/write-concern-mongodb-official]] (write concern `w`/`j`/`wtimeout` — 본 자료와 상보적)
|
|
- 인용하는 branch: [[raw/branch-notes/feature-mongo-runtime-baseline-contract]]
|
|
- 인용하는 project: [[raw/project-notes/ca-skeleton-operational-contract]]
|
|
- 인용한 wiki 요약: (미작성)
|