연결 풀 설정 조정하기
이 페이지의 내용
문제 | 솔루션 |
---|---|
데이터베이스 서버 로그 또는 실시간 패널에 반영되지 않는 느린 애플리케이션 측 작업 시간입니다. |
예를 들어 멤버의 지연 시간이 10,000밀리초인 경우, |
잘못 구성된 방화벽이 소켓 연결을 올바르지 않게 닫으며, 드라이버는 연결이 제대로 닫히지 않았음을 감지할 수 없음 | 소켓이 항상 닫혀 있도록 하려면
|
서버 로그 또는 실시간 패널에 애플리케이션이 새 연결을 생성하는 데 너무 많은 시간을 소비하는 것으로 표시됩니다. | 시작 시에는 사용 가능한 연결 수가 충분하지 않습니다. minPoolSize를 시작 시 사용하려는 연결 수로 설정합니다.
|
데이터베이스의 로드가 적고 항상 활성 연결 수가 적으며, 애플리케이션이 항상 한 번에 예상보다 적은 수의 작업을 수행함 | maxPoolSize를 늘리거나 애플리케이션 또는 사용 중인 프레임워크에서 활성 스레드 수를 늘립니다. |
데이터베이스 CPU 사용량이 예상보다 높습니다. 서버 로그 또는 실시간 패널에 예상보다 많은 연결 시도가 표시됩니다. | maxPoolSize를 줄이거나 애플리케이션의 스레드 수를 줄입니다. 이렇게 하면 로드 및 응답 시간을 줄일 수 있습니다. |
경고
서버 작업이 오래 실행되는 것을 방지하려면 socketTimeoutMS
를 사용하지 마세요. 대신 서버가 장기 실행 작업을 취소할 수 있도록 쿼리와 함께 maxTimeMS()
를 사용하세요.
최대 연결 수 계산
사용량을 계산하여 각 연결에 대해 실행 중인 작업 수를 찾습니다.
멤버가 3명인 복제본 세트에 4개의 애플리케이션 서버가 연결되어 있다고 가정해 보겠습니다. 이 시나리오에서는 4개의 애플리케이션 서버 각각이 각 복제본 세트 멤버에 대한 연결 풀을 생성합니다.
maxPoolSize
에 멤버 수를 곱하여 각 애플리케이션 서버에서 열 수 있는 최대 연결 수를 계산합니다.
애플리케이션에서 3명의 멤버로 구성된 복제본 세트로 나가는 연결을 계산합니다.
100 (maxPoolSize
기본값 100
) x 3 (복제본 세트 멤버) = 300 (애플리케이션의 발신 연결).
4개의 애플리케이션 서버에서 복제본 세트로 들어오는 연결을 계산합니다.
100 (maxPoolSize
기본값 100
) x 4 (애플리케이션 서버) = 400 (각 mongod에 대한 수신 연결).