Docs Menu
Docs Home
/ / /
C++ 드라이버
/

연결 풀

이 페이지의 내용

  • mongocxx::client vs mongocxx::pool
  • 연결 풀 및 스레드 안전성
  • 연결 풀 구성
  • 연결 풀 사용

독립형 mongocxx::client 는 단일 스레드 알고리즘을 사용하여 연결된 클러스터의 상태를 모니터링합니다. 복제본 세트에 연결되면 스레드는 60 초마다 "세계를 중지"하여 클러스터의 상태를 확인합니다. 반면에 mongocxx::pool 는 클러스터의 각 서버에 대해 별도의 백그라운드 스레드를 사용하며, 각 서버는 10 초마다 모니터링하는 서버의 상태를 확인합니다. "세계를 멈추게 하는" 대신 백그라운드에서 클러스터를 모니터링하면 성능상의 이점이 있으므로, 애플리케이션이 여러 스레드에 액세스할 수 있는 경우 독립형 클라이언트 세트 대신 mongocxx::pool 를 사용하는 것이 좋습니다. 하나의 스레드를 사용합니다.

mongocxx::pool 는 여러 스레드에서 공유할 수 있으며 클라이언트를 만드는 데 사용할 수 있습니다. 그러나 각 mongocxx::client 는 단일 스레드에서만 사용할 수 있습니다. 스레드 안전 방식으로 mongocxx::client 를 사용하는 방법에 대한 자세한 내용은 스레드 안전 문서 를 참조하세요.

연결 풀의 클라이언트 수는 URI 매개변수 minPoolSizemaxPoolSize 에 의해 결정됩니다. minPoolSizemaxPoolSize 옵션은 드라이버가 유휴 상태이거나 완전히 사용되는 경우에 대한 리소스 사용량 목표를 설정합니다. 완전히 활용되면 최대 maxPoolSize 클라이언트를 사용할 수 있습니다. 클라이언트가 풀로 반환되면 풀이 다시 minPoolSize로 줄어들 때까지 해당 클라이언트는 폐기됩니다.

maxPoolSize
mongocxx::pool(풀에 있는 것과 체크아웃한 경우 모두)이 생성한 최대 클라이언트 수입니다. 기본값은 100 입니다. 이 값에 도달하면 mongocxx::pool::acquire는 다른 스레드가 클라이언트를 풀에 반환할 때까지 차단합니다.
minPoolSize
유휴 상태일 때 풀의 대상 크기를 설정합니다. 이만큼 많은 클라이언트가 생성되면 풀에 이보다 적은 수의 클라이언트는 없을 것입니다. minPoolSize를 초과하는 추가 클라이언트가 생성되면 풀로 반환될 때 폐기됩니다. 기본값은 "0"이며, 이 기능을 비활성화합니다. 비활성화하면 클라이언트가 삭제되지 않습니다.

연결 풀을 사용하려면 먼저 mongocxx::pool 을 만들고 URI를 인수로 전달합니다. 그런 다음 mongocxx::pool::acquire 를 호출하여 풀에서 클라이언트를 수신합니다. 클라이언트는 범위를 벗어나면 자동으로 풀로 반환됩니다.

연결 풀 예시 참조하세요. 를 참조하세요.

돌아가기

Stable API