문서 메뉴

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

연결 풀 설정 조정하기

이 페이지의 내용

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

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

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

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

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

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

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

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

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

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

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

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

경고

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

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

멤버가 3명인 복제본 세트에 4개의 애플리케이션 서버가 연결되어 있다고 가정해 보겠습니다. 이 시나리오에서는 4개의 애플리케이션 서버 각각이 각 복제본 세트 멤버에 대한 연결 풀을 생성합니다.

maxPoolSize 에 멤버 수를 곱하여 각 애플리케이션 서버에서 열 수 있는 최대 연결 수를 계산합니다.

애플리케이션에서 3명의 멤버로 구성된 복제본 세트로 나가는 연결을 계산합니다.

100 (maxPoolSize 기본값 100) x 3 (복제본 세트 멤버) = 300 (애플리케이션의 발신 연결).

4개의 애플리케이션 서버에서 복제본 세트로 들어오는 연결을 계산합니다.

100 (maxPoolSize 기본값 100) x 4 (애플리케이션 서버) = 400 (각 mongod에 대한 수신 연결).

← 연결 풀 개요

이 페이지의 내용