문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

연결 풀 개요

이 페이지의 내용

  • 연결 풀이란 무엇입니까?
  • 연결 풀 만들기 및 사용
  • 샤드 클러스터 연결 풀링
  • 연결 풀 구성 설정

이 문서에서는 연결 풀을 사용하여 애플리케이션과 MongoDB 인스턴스 간의 연결을 관리하는 방법을 설명합니다.

연결 풀드라이버 에 의해 유지 관리되는 바로 사용할 수 있는 개방형 데이터베이스 연결의 캐시입니다. 애플리케이션은 풀에서 원활하게 연결을 가져오고, 작업을 수행하고, 연결을 풀로 다시 반환할 수 있습니다. 연결 풀은 스레드에 안전합니다.

연결 풀은 애플리케이션 지연 시간을 줄이고 새 연결이 생성되는 횟수를 줄이는 데 도움이 됩니다.

연결 풀은 시작 시 연결을 생성합니다. 애플리케이션은 풀의 연결을 수동으로 반환할 필요가 없습니다. 대신 연결은 자동으로 풀로 돌아갑니다.

일부 연결은 활성 상태이고 일부 연결은 비활성 상태이지만 사용할 수 있습니다. 애플리케이션이 연결을 요청하고 풀에 사용할 수 있는 연결이 있는 경우 새 연결을 만들 필요가 없습니다.

대부분의 드라이버MongoClient 유형의 객체를 제공합니다.

애플리케이션이 여러 개의 개별 클러스터에 연결되지 않는 한 애플리케이션당 MongoClient 인스턴스 하나를 사용합니다. 각 MongoClient 인스턴스는 MongoClient가 생성될 때 지정된 MongoDB 클러스터 또는 노드에 대한 자체 연결 풀을 관리합니다. MongoClient 객체는 대부분의 드라이버에서 스레드로부터 안전합니다.

참고

애플리케이션으로 어디서든 액세스할 수 있는 위치에 MongoClient 인스턴스를 저장합니다.

LDAP와 함께 연결 풀을 사용하려면 LDAP 연결 풀 동작을 참조하십시오.

mongos 라우터에는 클러스터의 각 노드에 연결 풀이 있습니다. 샤드 클러스터 내 개별 노드에 대한 연결 가용성은 지연 시간에 영향을 미칩니다. 작업은 연결이 설정될 때까지 기다려야 합니다.

다음 위치에서 연결 풀 설정을 지정할 수 있습니다.

  • MongoDB URI

  • 애플리케이션의 MongoClient 인스턴스

  • 애플리케이션 프레임워크의 구성 파일

설정
설명
connectTimeoutMS

대부분의 드라이버는 기본적으로 시간 초과가 발생하지 않습니다. Java 드라이버의 일부 버전(예: 버전 3.7)은 기본적으로 10으로 설정되어 있습니다.

기본값입니다: 0 대부분의 드라이버에 해당합니다. 드라이버 설명서를 참조하세요.

풀에서 동시에 설정할 수 있는 최대 연결 수입니다.

maxConnecting Rust 드라이버를 제외한 모든 드라이버에 대해 지원됩니다.

maxConnecting 값을 높이면 클라이언트가 서버와의 연결을 더 빠르게 설정할 수 있지만 연결 폭풍이 발생할 가능성이 높아집니다. maxConnecting 값이 너무 낮으면 연결 풀에 심한 스로틀링이 발생하고 연결을 체크아웃하는 클라이언트의 테일 지연 시간이 증가할 수 있습니다.

기본값입니다: 2

연결이 제거되거나 닫히기 전에 풀에서 유휴 상태로 유지될 수 있는 최대 시간(밀리초)입니다.

기본값: 드라이버 설명서를 참조하세요.

풀에서 열 수 있는 최대 연결 수입니다. 연결 풀이 최대 연결 수에 도달하면 새 연결은 waitQueueTimeoutMS 값이 될 때까지 대기합니다.

기본값입니다: 100

풀에서 열린 최소 연결 수입니다. minPoolSize의 값은 maxPoolSize의 값보다 작아야 합니다.

기본값: 0

각 TaskExecutor 연결 풀이 지정된 mongod 인스턴스에서 열 수 있는 최대 아웃바운드 연결의 수입니다.

기본값: 2 64 - 1

매개 변수는 샤딩된 배포에만 적용됩니다.

각 TaskExecutor 연결 풀이 구성 서버에 열 수 있는 최대 아웃바운드 연결 수를 설정하려면 ShardingTaskExecutorPoolMaxSize에 대한 선택적 오버라이드를 선택하세요.

다음으로 설정하는 경우:

  • -1, ShardingTaskExecutorPoolMaxSize가 사용됩니다. 이것이 기본값입니다.

  • -1 보다 큰 정수 값은 각 TaskExecutor 연결 풀이 구성 서버에 열 수 있는 최대 아웃바운드 연결 수를 무시합니다.

매개 변수는 샤딩된 배포에만 적용됩니다.

기본값: -1

버전 6.0에 추가.

각 작업 실행기 연결 풀이 주어진 mongod 인스턴스에 대해 열 수 있는 아웃바운드 연결의 최소 개수입니다.

기본값: 1

매개 변수는 샤딩된 배포에만 적용됩니다.

선택적으로 ShardingTaskExecutorPoolMinSize를 재정의하여 각 TaskExecutor 연결 풀이 구성 서버에 대해 열 수 있는 최소 아웃바운드 연결 수를 설정하세요.

다음으로 설정하는 경우:

  • -1, ShardingTaskExecutorPoolMinSize가 사용됩니다. 이것이 기본값입니다.

  • -1보다 큰 정수 값으로 설정하면 각 작업 실행기 연결 풀이 구성 서버에 열 수 있는 아웃바운드 연결의 최소 개수를 재정의합니다.

매개 변수는 샤딩된 배포에만 적용됩니다.

기본값: -1

버전 6.0에 추가.

TCP 연결에서 시간 초과 전에 대기할 시간(밀리초)입니다.

장기 실행 서버 작업을 방지하는 작업을 방지하는 메커니즘으로 socketTimeoutMS을 사용하지 마세요.

소켓 시간 제한을 낮게 설정하면 서버가 응답하기 전에 오류가 발생하는 작업이 발생할 수 있습니다.

기본값: 0, 이는 시간 초과가 없음을 의미합니다.

연결이 가능해질 때까지 캔 스레드가 기다리는 최대 대기 시간(밀리초)입니다. 0 값은 제한이 없음을 의미합니다.

기본값: 0

← MongoDB 성능