문서 메뉴

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

연결 풀 설정 조정하기

이 페이지의 내용

  • 최대 연결 수 계산
문제
솔루션
데이터베이스 서버 로그 또는 실시간 패널에 반영되지 않은 애플리케이션 측의 느린 작업 시간

connectTimeoutMS를 사용하여 연결 단계에서 드라이버가 무한정 대기하지 않도록 합니다.

connectTimeoutMS를 세트 멤버에 대한 가장 긴 네트워크 지연 시간 시간보다 큰 값으로 설정합니다.

예를 들어 멤버의 지연 시간이 10,000밀리초인 경우, connectTimeoutMS5000밀리초로 설정하면 드라이버가 해당 멤버에 연결할 수 없습니다.

잘못 구성된 방화벽이 소켓 연결을 올바르지 않게 닫으며, 드라이버는 연결이 제대로 닫히지 않았음을 감지할 수 없음

소켓이 항상 닫혀 있도록 하려면 socketTimeoutMS를 사용합니다.

socketTimeoutMS를 드라이버가 실행하는 가장 느린 작업의 시간 대비 2~3배로 설정합니다.

서버 로그 또는 실시간 패널에 애플리케이션이 새 연결을 생성하는 데 너무 많은 시간을 소비한다는 것이 표시됨

시작 시에는 사용 가능한 연결 수가 충분하지 않습니다. minPoolSize를 설정하여 풀에 연결을 할당합니다.

minPoolSize를 시작 시 사용하려는 연결 수로 설정합니다.

MongoClient 인스턴스로 연결 수가 항상 존재하도록 보장합니다.

데이터베이스의 로드가 적고 항상 활성 연결 수가 적으며, 애플리케이션이 항상 한 번에 예상보다 적은 수의 작업을 수행함
maxPoolSize를 늘리거나 애플리케이션 또는 사용 중인 프레임워크에서 활성 스레드 수를 늘립니다.
데이터베이스 CPU 사용량이 예상보다 높고, 서버 로그 또는 실시간 패널에 예상보다 많은 연결 시도가 표시됨
maxPoolSize를 줄이거나 애플리케이션의 스레드 수를 줄입니다. 이렇게 하면 로드 및 응답 시간을 줄일 수 있습니다.

경고

서버 작업이 오래 실행되는 것을 방지하려면 socketTimeoutMS를 사용하지 마세요. 대신 서버가 장기 실행 작업을 취소할 수 있도록 쿼리와 함께 maxTimeMS()를 사용하세요.

사용량을 계산하여 각 연결에 대해 실행 중인 작업 수를 찾습니다.

세 명의 멤버가 있는 복제본 세트에 연결하는 애플리케이션 서버를 생각해 보겠습니다. 이 시나리오에서 애플리케이션 서버는 각 복제본 세트 멤버에 대한 연결 풀을 생성합니다. 또한 각 노드의 각 클라이언트가 모니터링을 위해 생성하는 연결도 고려해야 합니다.

애플리케이션 서버에서 열 수 있는 최대 연결 수는 maxPoolSize, 멤버 수, 각 멤버의 모니터링 및 RTT 연결에 따라 결정됩니다.

예를 들어, 다음 공식을 사용하여 애플리케이션에서 세 멤버로 구성된 복제본 세트로 향하는 발신 연결을 계산할 수 있습니다.

(
**100** {:urioption:`maxPoolSize`}
+ **1** monitoring connection
+ **1** RTT connection
)
* 3 replica set members
= **306** outgoing connections from the application.
← 연결 풀 개요

이 페이지의 내용