연결 풀 개요
이 문서에서는 연결 풀을 사용하여 애플리케이션과 MongoDB 인스턴스 간의 연결을 관리하는 방법을 설명합니다.
연결 풀이란 무엇입니까?
정의
연결 풀은 드라이버에서 유지 관리되며 즉시 사용할 수 있는 개방형 데이터베이스 연결의 캐시입니다. 애플리케이션은 풀에서 원활하게 연결을 가져오고, 작업을 수행하고, 연결을 풀로 다시 반환할 수 있습니다. 연결 풀은 스레드에 안전합니다.
연결 풀의 이점
연결 풀은 애플리케이션 지연 시간을 줄이고 새 연결이 생성되는 횟수를 줄이는 데 도움이 됩니다.
연결 풀은 시작 시 연결을 생성합니다. 애플리케이션은 풀의 연결을 수동으로 반환할 필요가 없습니다. 대신 연결은 자동으로 풀로 돌아갑니다.
일부 연결은 활성 상태이고 일부 연결은 비활성 상태이지만 사용할 수 있습니다. 애플리케이션이 연결을 요청하고 풀에 사용할 수 있는 연결이 있는 경우 새 연결을 만들 필요가 없습니다.
연결 풀 만들기 및 사용
드라이버의 객체 인스턴스 사용 MongoClient
대부분의 드라이버는 MongoClient
형식의 객체를 제공합니다.
애플리케이션이 여러 개의 개별 클러스터에 연결되지 않는 한 애플리케이션당 MongoClient
인스턴스 하나를 사용합니다. 각 MongoClient
인스턴스는 MongoClient
가 생성될 때 지정된 MongoDB 클러스터 또는 노드에 대한 자체 연결 풀을 관리합니다. MongoClient
객체는 대부분의 드라이버에서 스레드로부터 안전합니다.
참고
애플리케이션으로 어디서든 액세스할 수 있는 위치에 MongoClient
인스턴스를 저장합니다.
인증
LDAP와 함께 연결 풀을 사용하려면 LDAP 연결 풀 동작을 참조하세요.
샤딩된 클러스터 연결 풀링
mongos
라우터에는 클러스터의 각 노드에 연결 풀이 있습니다. 샤딩된 클러스터 내 개별 노드에 대한 연결 가용성은 지연 시간에 영향을 미칩니다. 작업은 연결이 설정될 때까지 기다려야 합니다.
연결 풀 구성 설정
연결 풀을 구성하려면 옵션을 다음과 같이 설정합니다.
MongoDB URI를 통해
프로그래밍적으로
MongoClient
인스턴스를 빌드할 때 또는애플리케이션 프레임워크의 구성 파일에 추가합니다.
설정
설정 | 설명 |
---|---|
풀에서 열 수 있는 최대 연결 수입니다. 연결 풀이 최대 연결 수에 도달하면 새 연결은 기본값입니다: | |
풀에서 열린 최소 연결 수입니다. 기본값: | |
대부분의 드라이버는 기본적으로 시간 초과가 발생하지 않습니다. Java 드라이버의 일부 버전(예시: 버전 3.7)은 기본적으로 기본값입니다: | |
TCP 연결에서 시간 초과 전에 대기할 시간(밀리초)입니다. 장기 실행 서버 작업을 방지하는 작업을 방지하는 메커니즘으로 소켓 시간 제한을 낮게 설정하면 서버가 응답하기 전에 오류가 발생하는 작업이 발생할 수 있습니다. 기본값: | |
연결이 제거되거나 닫히기 전에 풀에서 유휴 상태로 유지될 수 있는 최대 시간(밀리초)입니다. 기본값: 드라이버 설명서를 참조하세요. | |
연결이 가능해질 때까지 스레드가 대기할 수 있는 최대 시간(단위: 밀리초)입니다. 기본값: | |
각 작업 실행기 연결 풀이 주어진 기본값: 매개 변수는 샤딩된 배포에만 적용됩니다. | |
선택적으로 다음으로 설정하는 경우:
매개 변수는 샤딩된 배포에만 적용됩니다. 기본값: 버전 5.0.10에 추가 되었습니다. | |
각 TaskExecutor 연결 풀이 지정된 기본값: 2 64 - 1. 매개 변수는 샤딩된 배포에만 적용됩니다. | |
각 TaskExecutor 연결 풀이 구성 서버에 열 수 있는 최대 아웃바운드 연결 수를 설정하려면 다음으로 설정하는 경우:
매개 변수는 샤딩된 배포에만 적용됩니다. 기본값: 버전 5.0.10에 추가 되었습니다. |