개요
이 가이드에서 Scala 드라이버가 연결 풀을 사용하여 MongoDB 배포서버에 대한 연결을 관리하는 방법과 애플리케이션에서 연결 풀 설정을 구성하는 방법에 대해 학습할 수 있습니다.
연결 풀은 Scala 드라이버에서 유지 관리되는 개방형 데이터베이스 연결의 캐시입니다. 애플리케이션은 풀에서 연결을 조회하고 작업을 수행하며 재사용을 위해 연결을 반환합니다.
연결 풀을 사용하면 지연 시간이 줄어들고 드라이버가 새 연결을 생성하는 횟수가 최소화됩니다.
연결 풀 만들기
모든 MongoClient 인스턴스에는 MongoDB 토폴로지의 각 서버에 대한 내장 연결 풀이 있습니다. 연결 풀은 요청 시 소켓을 열어 애플리케이션에서 동시 MongoDB 작업을 지원합니다.
maxPoolSize 옵션은 각 연결 풀의 최대 크기를 설정하며, 기본값은 100입니다. 서버에 대한 사용 중인 연결 수가 maxPoolSize 값에 도달하면 해당 서버에 대한 다음 요청은 연결이 가능해질 때까지 대기합니다.
각 MongoClient 인스턴스 서버의 상태 모니터링 위해 MongoDB 토폴로지 에서 서버 당 두 개의 소켓을 더 엽니다.
연결 풀 구성
연결 문자열 또는 MongoClientSettings 객체를 사용하여 연결 풀을 구성할 수 있습니다.
Connection String 또는 MongoClientSettings 탭 선택하여 해당 구문을 확인합니다.
다음 표에서는 연결 풀을 구성하기 위한 연결 문자열 옵션에 대해 설명합니다.
옵션 | 설명 |
|---|---|
| 드라이버가 동시에 설정할 수 있는 최대 연결 수입니다. 기본값입니다: |
| 드라이버가 연결을 닫기 전에 풀에서 유휴 상태로 유지될 수 있는 최대 시간(밀리초)입니다. 기본값입니다: |
| 드라이버가 단일 연결 풀에서 한 번에 열 수 있는 최대 연결 수입니다. 기본값입니다: |
| 드라이버가 단일 연결 풀에서 유지하는 최소 연결 수입니다. 이 값은 기본값입니다: |
| 이 옵션은 더 이상 사용하지 않습니다. 대신 연결이 가능해질 때까지 작업이 기다릴 수 있는 최대 대기 시간(밀리초)입니다. 기본값입니다: |
| 연결을 유지할 수 있는 최대 시간(밀리초)입니다. 기본값입니다: |
자세한 내용은 ConnectionString API 설명서를 참조하세요.
연결 풀을 구성하려면 applyToConnectionPoolSettings() 메서드를 MongoClientSettings.Builder 클래스에 연결합니다. 다음 표에는 풀을 구성하기 위해 연결할 수 있는 ConnectionPoolSettings.Builder 메서드가 설명되어 있습니다.
메서드 | 설명 |
|---|---|
| 연결 풀 이벤트에 대한 리스너를 추가합니다. |
|
|
|
|
| 연결 풀 리스너 목록을 설정합니다. |
| 유휴 및 만료된 연결을 managed하는 주기적 작업의 주기를 설정합니다. |
| 연결 풀에서 첫 번째 유지 관리 작업을 실행하기 전에 대기할 시간을 설정합니다. |
| 풀링된 연결의 최대 유휴 시간을 설정합니다. |
| 풀링된 연결의 최대 수명을 설정합니다. |
| 풀이 동시에 설정할 수 있는 최대 연결 수를 설정합니다. 기본값입니다: |
| 풀에서 허용되는 최대 연결 수를 설정합니다. 기본값입니다: |
| 사용 가능한 연결을 기다리는 최대 시간을 설정합니다. 기본값입니다: |
| 드라이버가 풀에서 유지하는 최소 연결 수를 설정합니다. 기본값입니다: |
참고
maxSize() 및 minSize() 설정은 푸를 전체가 아니라 배포서버의 각 서버에 개별적으로 적용됩니다.
학습하려면 ConnectionPoolSettings.빌더 API 설명서를 참조하세요.
예시
다음 예시는 최대 크기가 50 연결인 연결 풀을 생성하는 방법을 보여줍니다.
Connection String 또는 MongoClientSettings 탭 선택하여 해당 구문을 확인합니다.
val mongoClient = MongoClient("mongodb://<host>:<port>/?maxPoolSize=50")
val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString("<connection string>")) .applyToConnectionPoolSettings( (builder: ConnectionPoolSettings.Builder) => builder.maxSize(50)) .build() val mongoClientWithSettings = MongoClient(settings)
추가 정보
연결 풀 사용에 대한 자세한 내용은 서버 매뉴얼의 연결 풀 문서를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.